Scrapy 使用信號來通知事情發(fā)生。您可以在您的 Scrapy 項目中捕捉一些信號(使用 extension)來完成額外的工作或添加額外的功能,擴展 Scrapy。
雖然信號提供了一些參數(shù),不過處理函數(shù)不用接收所有的參數(shù) - 信號分發(fā)機制(singal dispatching mechanism)僅僅提供處理器(handler)接受的參數(shù)。
您可以通過信號(Signals) API 來連接(或發(fā)送您自己的)信號。
有些信號支持從處理器返回 Twisted deferreds,參考下邊的內(nèi)置信號參考手冊(Built-in signals reference)來了解哪些支持。
以下給出 Scrapy 內(nèi)置信號的列表及其意義。
當(dāng) Scrapy 引擎啟動爬取時發(fā)送該信號。
該信號支持返回 deferreds。
注解
該信號可能會在信號
spider_opened之后被發(fā)送,取決于 spider 的啟動方式。 所以不要 依賴 該信號會比spider-opened更早被發(fā)送。
當(dāng) Scrapy 引擎停止時發(fā)送該信號(例如,爬取結(jié)束)。
該信號支持返回 deferreds。
當(dāng) item 被爬取,并通過所有 Item Pipeline 后(沒有被丟棄(dropped),發(fā)送該信號。
該信號支持返回 deferreds。
參數(shù):
Item 對象) – 爬取到的 itemSpider 對象) – 爬取 item 的 spiderResponse 對象) – 提取 item 的 response當(dāng) item 通過 Item Pipeline,有些 pipeline 拋出 DropItem 異常,丟棄 item 時,該信號被發(fā)送。
該信號支持返回 deferreds。
參數(shù):
Item 對象) – 爬取到的 itemSpider 對象) – 爬取 item 的 spiderDropItem 異常) – 導(dǎo)致 item 被丟棄的異常(必須是 DropItem 的子類)當(dāng)某個 spider 被關(guān)閉時,該信號被發(fā)送。該信號可以用來釋放每個 spider 在 spider_opened 時占用的資源。
該信號支持返回 deferreds。
參數(shù):
Spider 對象) – 關(guān)閉的 spider'finished'。否則,如果 spider 是被引擎的 close_spider 方法所關(guān)閉,則其為調(diào)用該方法時傳入的 reason 參數(shù)(默認為'cancelled')。如果引擎被關(guān)閉(例如, 輸入 Ctrl-C),則其為'shutdown'。當(dāng) spider 開始爬取時發(fā)送該信號。該信號一般用來分配 spider 的資源,不過其也能做任何事。
該信號支持返回 deferreds。
參數(shù):
Spider 對象) – 開啟的 spider當(dāng) spider 進入空閑(idle)狀態(tài)時該信號被發(fā)送??臻e意味著:
當(dāng)該信號的所有處理器(handler)被調(diào)用后,如果 spider 仍然保持空閑狀態(tài),引擎將會關(guān)閉該 spider。當(dāng) spider 被關(guān)閉后,spider_closed 信號將被發(fā)送。
您可以,比如,在 spider_idle 處理器中調(diào)度某些請求來避免 spider 被關(guān)閉。
該信號不支持返回 deferreds。
參數(shù):
Spider 對象) – 空閑的 spider當(dāng) spider 的回調(diào)函數(shù)產(chǎn)生錯誤時(例如,拋出異常),該信號被發(fā)送。
參數(shù):
Response 對象) – 當(dāng)異常被拋出時被處理的 responseSpider 對象) – 拋出異常的 spider當(dāng)引擎調(diào)度一個 Request 對象用于下載時,該信號被發(fā)送。
該信號 不支持 返回 deferreds。
參數(shù):
Request 對象) – 到達調(diào)度器的 requestSpider 對象) – 產(chǎn)生該 request 的 spiderSent when a Request, scheduled by the engine to be downloaded later, is rejected by the scheduler.
The signal does not support returning deferreds from their handlers.
參數(shù):
Request object) – the request that reached the schedulerSpider object) – the spider that yielded the request當(dāng)引擎從 downloader 獲取到一個新的 Response 時發(fā)送該信號。
該信號 不支持 返回 deferreds。
參數(shù):
Response 對象) – 接收到的 responseRequest 對象) – 生成 response 的 requestSpider 對象) – response 所對應(yīng)的 spider當(dāng)一個 HTTPResponse 被下載時,由 downloader 發(fā)送該信號。
該信號 不支持 返回 deferreds。
參數(shù):
Response 對象) – \下載的 responseRequest 對象) – 生成 response 的 requestSpider 對象) – response 所對應(yīng)的 spider