• 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)
    
  • 相关阅读:
    20180420首旅酒店的操作记录
    股票的站上均线和反弹购买的学习
    linux里面的fork函数创建一个新进程
    allegro导入网表过程中出现的错误信息
    海思NB-IOT的SDK添加AT指令方法
    如何在ubuntun中安装pycharm并将图标显示在桌面上
    流畅python学习笔记:第十九章:动态属性和特性
    一起来学linux:目录与路径
    一起来学linux:用户与用户组
    python自动化运维五:pexpect
  • 原文地址:https://www.cnblogs.com/guozepingboke/p/10794572.html
Copyright © 2020-2023  润新知