zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    查看dll定义的宏
    循环调用dll库的界面时,首次正常,再次无响应
    strftime使用%F格式化日期失败
    自己程序生成的二维码部分手机无法识别
    Drools规则
    idea快捷键
    风控文档笔记
    工作笔记
    工具方法
    BIO,NIO,AIO
  • 原文地址:https://www.cnblogs.com/guozepingboke/p/10794572.html
Copyright © 2011-2022 走看看