第三百五十五節,Python分布式爬蟲打造搜索引擎Scrapy精講—scrapy信號詳解
第三百五十五節,Python分布式爬蟲打造搜索引擎Scrapy精講—scrapy信號詳解
信號一般使用信號分發器dispatcher.connect(),來設置信號,和信號觸發函數,當捕獲到信號時執行一個函數
dispatcher.connect()信號分發器,第一個參數信號觸發函數,第二個參數是觸發信號,
signals.engine_started當Scrapy引擎啟動爬取時發送該信號。該信號支持返回deferreds。
signals.engine_stopped當Scrapy引擎停止時發送該信號(例如,爬取結束)。該信號支持返回deferreds。
signals.item_scraped(item, response, spider)
參數:
item (Item 對象) – 爬取到的item
spider (Spider 對象) – 爬取item的spider
response (Response 對象) – 提取item的response
signals.item_dropped(item, exception, spider)當item通過 Item Pipeline ,有些pipeline拋出 DropItem 異常,丟棄item時,該信號被發送。該信號支持返回deferreds。
參數:
item (Item 對象) – Item Pipeline 丟棄的item
spider (Spider 對象) – 爬取item的spider
exception (DropItem 異常) – 導致item被丟棄的異常(必須是 DropItem 的子類)
signals.spider_closed(spider, reason)當某個spider被關閉時,該信號被發送。該信號可以用來釋放每個spider在 spider_opened 時占用的資源。該信號支持返回deferreds。
參數:
spider (Spider 對象) – 關閉的spider
reason (str) – 描述spider被關閉的原因的字符串。如果spider是由於完成爬取而被關閉,則其為 ‘finished‘ 。否則,如果spider是被引擎的 close_spider 方法所關閉,則其為調用該方法時傳入的 reason 參數(默認為 ‘cancelled‘)。如果引擎被關閉(例如, 輸入Ctrl-C),則其為 ‘shutdown‘ 。
signals.spider_opened(spider)當spider開始爬取時發送該信號。該信號一般用來分配spider的資源,不過其也能做任何事。該信號支持返回deferreds。
參數: spider (Spider 對象) – 開啟的spider
signals.spider_idle(spider)當spider進入空閑(idle)狀態時該信號被發送。空閑意味著:
requests正在等待被下載
requests被調度
items正在item pipeline中被處理
當該信號的所有處理器(handler)被調用後,如果spider仍然保持空閑狀態, 引擎將會關閉該spider。當spider被關閉後, spider_closed 信號將被發送。您可以,比如,在 spider_idle 處理器中調度某些請求來避免spider被關閉。該信號 不支持 返回deferreds。
參數: spider (Spider 對象) – 空閑的spider
signals.spider_error(failure, response, spider)當spider的回調函數產生錯誤時(例如,拋出異常),該信號被發送
參數:
failure (Failure 對象) – 以Twisted Failure 對象拋出的異常
response (Response 對象) – 當異常被拋出時被處理的response
spider (Spider 對象) – 拋出異常的spider
signals.request_scheduled(request, spider)當引擎調度一個 Request 對象用於下載時,該信號被發送。該信號 不支持 返回deferreds。
參數:
request (Request 對象) – 到達調度器的request
spider (Spider 對象) – 產生該request的spider
signals.response_received(response, request, spider)當引擎從downloader獲取到一個新的 Response 時發送該信號。該信號 不支持 返回deferreds。
參數:
response (Response 對象) – 接收到的response
request (Request 對象) – 生成response的request
spider (Spider 對象) – response所對應的spider
signals.response_downloaded(response, request, spider)當一個 HTTPResponse 被下載時,由downloader發送該信號。該信號 不支持 返回deferreds。
參數:
response (Response 對象) – 下載的response
request (Request 對象) – 生成response的request
spider (Spider 對象) – response所對應的spider
第三百五十五節,Python分布式爬蟲打造搜索引擎Scrapy精講—scrapy信號詳解