zoukankan      html  css  js  c++  java
  • scrapy信号扩展

    engine_started

    scrapy.signals.engine_started()

    当scrapy引擎启动爬取时发送该信号

    该信号支持返回deferreds

    当信号可能会在信号spider_opened之后被发送,取决于spider的启动方式

    engine_stopped

    scrapy.signals.engine_stopped()

    当scrapy引擎停止时发送该信号例如爬取结束

    该信号支持返回deferreds

    item_scraped

    scrapy.signals.item_scrapped(item,response,spider)

    当item被爬取,并通过Item Pipeline后没有被dropped时发送,该信号支持返回deferreds

    参数:爬取到的item对象

          爬取item的spider对象

       提取item的response对象

    item_dropped

    scrapy.signals.item_dropped(item,exception,spider)

    当item通过Item Pipeline,有些pipeline抛出DropItem异常,丢弃item时发送,该信号支持返回deferreds

    参数:Item Pipeline丢弃的item

          爬取item的spider对象

       导致item被丢弃的异常,必须是DropItem的子类

    spider_closed

    scrapy.signals.spider_closed(spider,reason)

    当某个spider被关闭时发送,该信号可以用来释放每个spider在spider_opened后占用的资源

    该信号支持返回deferreds

    参数:被关闭的spider对象

          描述spider被关闭的原因的字符串。如果spider是由于完成爬取而被关闭,则其为‘finished'。如果spider是被引擎的close_spider方法所关闭,则其为调用该方法时的reason参数(默认为'cancelled')。如果引擎被关闭比如输入Ctrl + C ,则为'shutdown'

    spider_opened

    scrapy.signals.spider_opened(spider)

    当spider开始爬取时发送该信号。该信号支持返回deferreds

    参数:开启的spider对象

    spider_idle

    scrapy.signals.spider_idle(spider)

    当spider进入空闲状态时发送该信号。

    空闲意味着:requests正在等待被下载

          requests被调度

          items正在item pipeline中处理

    当该信号的所有处理器handler被调用后,如果spider仍然保持空闲状态,引擎将会关闭该spider。当spider被关闭后,spider_closed信号将被发送

    可以在spider_idle处理器中调度某些请求来避免spider被关闭。该信号不支持返回deferreds

    参数:空闲的spider对象

    spider_error

    scrapy.signals.spider_error(failure,response,spider)

    当spider的回调函数产生错误时发送该信号

    参数:以Twisted Failure对象抛出的异常

       当异常被抛出时被处理的response对象

          抛出异常的spider对象

    request_scheduled

    scrapy.signals.request_scheduled(request,spider)

    当引擎调度一个request对象用于下载时,该信号被发送,该信号不支持返回deferreds

    参数:到达调度器的request对象

       产生该request的spider对象

    response_received

    scrapy.signals.response_received(response,request,spider)

    当引擎从downloader获取一个新的response时发送该信号,该信号不支持返回deferreds

    参数:接受的response对象

       生成response的request对象

       response对应的spider对象

    response_downloaded

    scrapy.siganls.response_downloaded(response,request,spider)

    当一个HttpResponse被下载时,由downloader发送该信号,该信号不支持返回deferreds

    参数:下载的response对象

           生成response的request对象

         response对应的spider对象

    from scrapy import signals
    class Myextensions(object):
        def __init__(self):
            pass
        
        @classmethod
        def from_crawler(cls,crawler):
            obj=cls()
            crawler.signals.connect(obj.xiaobai,signal=signals.spider_opened)
            crawler.signals.connect(obj.baixiao,signal=signals.spider_closed)
            return obj
    
        def xiaobai(self,spider):
            print('opened')
    
        def baixiao(selfs,spider):
            print('closed')
     
  • 相关阅读:
    select移动选项
    jFinal+AngularJs未来javaEE开发的趋势——程序员的福音 .
    MVC框架PK:Angular、Backbone、CanJS与Ember
    错误 1093 You can't specify target table 'table name' for update in FROM clause
    Angularjs开发一些经验总结
    需求调研的步骤、方法
    MyEclipse如何跟踪调试
    需求入门: 软件需求的三个层次
    JAVA的Random类(转)
    Java中从[1,36]随机生成7个不重复的数字,放入一个数组中
  • 原文地址:https://www.cnblogs.com/c491873412/p/7845635.html
Copyright © 2011-2022 走看看