scrapy信號擴展

engine_startedapp

scrapy.signals.engine_started()scrapy

當scrapy引擎啓動爬取時發送該信號ide

該信號支持返回deferreds函數

當信號可能會在信號spider_opened以後被髮送,取決於spider的啓動方式spa

engine_stoppedcode

scrapy.signals.engine_stopped()對象

當scrapy引擎中止時發送該信號例如爬取結束blog

該信號支持返回deferredsip

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')
相關文章
相關標籤/搜索