• start_requests


    start_requests

     简化前,我们需要定义一个方法:start_requests(self),然后经过这个方法不断循环发送请求:

     def start_requests(self): 
            urls = [ 
                'http://lab.scrapyd.cn/page/1/',
                'http://lab.scrapyd.cn/page/2/',
            ]
            for url in urls:
                yield scrapy.Request(url=url, callback=self.parse) 
    


    简化后,以上的链接可以写在:start_urls这个常量里面,是不是省了好多事,人生是不是又美满了一大截?

        start_urls = [  # 另外一种写法,无需定义start_requests方法
            'http://lab.scrapyd.cn/page/1/',
            'http://lab.scrapyd.cn/page/2/',
        ]

    但是!上帝给你开一扇门,就会给你关另一扇门,用简化的方法,我们必须定义一个方法为:def parse(self, response),方法名一定是:parse,这样的话用简写的方式就能愉快的工作了
    完整代码如下:

    """
        scrapy初始Url的两种写法,
        一种是常量start_urls,并且需要定义一个方法parse()
        另一种是直接定义一个方法:star_requests()
    """
    import scrapy
    class simpleUrl(scrapy.Spider):
        name = "simpleUrl"
        start_urls = [  #另外一种写法,无需定义start_requests方法
            'http://lab.scrapyd.cn/page/1/',
            'http://lab.scrapyd.cn/page/2/',
        ]
    
        # 另外一种初始链接写法
        # def start_requests(self):
        #     urls = [ #爬取的链接由此方法通过下面链接爬取页面
        #         'http://lab.scrapyd.cn/page/1/',
        #         'http://lab.scrapyd.cn/page/2/',
        #     ]
        #     for url in urls:
        #         yield scrapy.Request(url=url, callback=self.parse)
        # 如果是简写初始url,此方法名必须为:parse
    
        def parse(self, response):
            page = response.url.split("/")[-2]
            filename = 'mingyan-%s.html' % page
            with open(filename, 'wb') as f:
                f.write(response.body)
            self.log('保存文件: %s' % filename)
    
  • 相关阅读:
    洛谷 1195 口袋的天空
    洛谷1955 程序自动分析
    【洛谷3295】[SCOI2016]萌萌哒
    洛谷2024 食物链
    八数码问题
    Codeforces Round #442 (Div. 2)
    Oracle 中truncate与delete的区别
    git命令提交步骤和解决冲突的
    git 更新代码到本地
    12、Python中的包
  • 原文地址:https://www.cnblogs.com/guozepingboke/p/10794572.html
Copyright © 2020-2023  润新知