在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 信號(Signals)
Benchmarking
命令行工具(Command line tools)
下載器中間件(Downloader Middleware)
信號(Signals)
Telnet 終端(Telnet Console)
初窺 Scrapy
數(shù)據(jù)收集(Stats Collection)
Scrapyd
通用爬蟲(Broad Crawls)
Item Loaders
試驗階段特性
Scrapy 入門教程
自動限速(AutoThrottle)擴展
Settings
Scrapy 終端(Scrapy shell)
下載項目圖片
DjangoItem
調(diào)試(Debugging)Spiders
選擇器(Selectors)
Feed exports
Spiders Contracts
借助 Firefox 來爬取
Logging
Spiders
Ubuntu 軟件包
實踐經(jīng)驗(Common Practices)
安裝指南
Item Exporters
擴展(Extensions)
Items
Spider 中間件(Middleware)
異常(Exceptions)
例子
發(fā)送 email
架構(gòu)概覽
常見問題(FAQ)
Jobs:暫停,恢復(fù)爬蟲
核心 API
使用 Firebug 進行爬取
Item Pipeline
Link Extractors
Web Service
調(diào)試內(nèi)存溢出

信號(Signals)

Scrapy 使用信號來通知事情發(fā)生。您可以在您的 Scrapy 項目中捕捉一些信號(使用 extension)來完成額外的工作或添加額外的功能,擴展 Scrapy。

雖然信號提供了一些參數(shù),不過處理函數(shù)不用接收所有的參數(shù) - 信號分發(fā)機制(singal dispatching mechanism)僅僅提供處理器(handler)接受的參數(shù)。

您可以通過信號(Signals) API 來連接(或發(fā)送您自己的)信號。

延遲的信號處理器(Deferred signal handlers)

有些信號支持從處理器返回 Twisted deferreds,參考下邊的內(nèi)置信號參考手冊(Built-in signals reference)來了解哪些支持。

內(nèi)置信號參考手冊(Built-in signals reference)

以下給出 Scrapy 內(nèi)置信號的列表及其意義。

engine_started

scrapy.signals.engine_started()

當(dāng) Scrapy 引擎啟動爬取時發(fā)送該信號。

該信號支持返回 deferreds。

注解

該信號可能會在信號 spider_opened 之后被發(fā)送,取決于 spider 的啟動方式。 所以不要 依賴 該信號會比 spider-opened 更早被發(fā)送。

engine_stopped

scrapy.signals.engine_stopped()

當(dāng) Scrapy 引擎停止時發(fā)送該信號(例如,爬取結(jié)束)。

該信號支持返回 deferreds。

item_scraped

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

當(dāng) item 被爬取,并通過所有 Item Pipeline 后(沒有被丟棄(dropped),發(fā)送該信號。

該信號支持返回 deferreds。

參數(shù):

  • item (Item 對象) – 爬取到的 item
  • spider (Spider 對象) – 爬取 item 的 spider
  • response (Response 對象) – 提取 item 的 response

item_dropped

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

當(dāng) item 通過 Item Pipeline,有些 pipeline 拋出 DropItem 異常,丟棄 item 時,該信號被發(fā)送。

該信號支持返回 deferreds。

參數(shù):

  • item (Item 對象) – 爬取到的 item
  • spider (Spider 對象) – 爬取 item 的 spider
  • exception (DropItem 異常) – 導(dǎo)致 item 被丟棄的異常(必須是 DropItem 的子類)

spider_closed

scrapy.signals.spider_closed(spider, reason)

當(dāng)某個 spider 被關(guān)閉時,該信號被發(fā)送。該信號可以用來釋放每個 spider 在 spider_opened 時占用的資源。

該信號支持返回 deferreds。

參數(shù):

  • spider (Spider 對象) – 關(guān)閉的 spider
  • reason (str) – 描述 spider 被關(guān)閉的原因的字符串。如果 spider 是由于完成爬取而被關(guān)閉,則其為'finished'。否則,如果 spider 是被引擎的 close_spider 方法所關(guān)閉,則其為調(diào)用該方法時傳入的 reason 參數(shù)(默認為'cancelled')。如果引擎被關(guān)閉(例如, 輸入 Ctrl-C),則其為'shutdown'。

spider_opened

scrapy.signals.spider_opened(spider)

當(dāng) spider 開始爬取時發(fā)送該信號。該信號一般用來分配 spider 的資源,不過其也能做任何事。

該信號支持返回 deferreds。

參數(shù):

  • spider (Spider 對象) – 開啟的 spider

spider_idle

scrapy.signals.spider_idle(spider)

當(dāng) spider 進入空閑(idle)狀態(tài)時該信號被發(fā)送??臻e意味著:

  • requests 正在等待被下載
  • requests 被調(diào)度
  • items 正在 item pipeline 中被處理

當(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 對象) – 空閑的 spider

spider_error

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

當(dāng) spider 的回調(diào)函數(shù)產(chǎn)生錯誤時(例如,拋出異常),該信號被發(fā)送。

參數(shù):

  • failure (Failure 對象) – 以 Twisted Failure 對象拋出的異常
  • response (Response 對象) – 當(dāng)異常被拋出時被處理的 response
  • spider (Spider 對象) – 拋出異常的 spider

request_scheduled

scrapy.signals.request_scheduled(request, spider)

當(dāng)引擎調(diào)度一個 Request 對象用于下載時,該信號被發(fā)送。

該信號 不支持 返回 deferreds。

參數(shù):

  • request (Request 對象) – 到達調(diào)度器的 request
  • spider (Spider 對象) – 產(chǎn)生該 request 的 spider

request_dropped

scrapy.signals.request_dropped(request, spider)

Sent 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 (Request object) – the request that reached the scheduler
  • spider (Spider object) – the spider that yielded the request

response_received

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

當(dāng)引擎從 downloader 獲取到一個新的 Response 時發(fā)送該信號。

該信號 不支持 返回 deferreds。

參數(shù):

  • response (Response 對象) – 接收到的 response
  • request (Request 對象) – 生成 response 的 request
  • spider (Spider 對象) – response 所對應(yīng)的 spider

response_downloaded

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

當(dāng)一個 HTTPResponse 被下載時,由 downloader 發(fā)送該信號。

該信號 不支持 返回 deferreds。

參數(shù):

  • response (Response 對象) – \下載的 response
  • request (Request 對象) – 生成 response 的 request
  • spider (Spider 對象) – response 所對應(yīng)的 spider
上一篇:試驗階段特性下一篇:Logging