engine_started 當Scrapy引擎啓動爬取時發送該信號
engine_stopped 當Scrapy引擎中止時發送該信號(例如,爬取結束)
item_scraped 當item被爬取,並經過全部 Item Pipeline 後(沒有被丟棄(dropped),發送該信號
item_dropped 當item經過 Item Pipeline ,有些pipeline拋出 DropItem 異常,丟棄item時,該信號被髮送
spider_closed 當某個spider被關閉時,該信號被髮送。該信號能夠用來釋放每一個spider在 spider_opened 時佔用的資源
spider_opened 當spider開始爬取時發送該信號。該信號通常用來分配spider的資源,不過其也能作任何事
spider_idle 當spider進入空閒(idle)狀態時該信號被髮送
spider_error 當spider的回調函數產生錯誤時(例如,拋出異常),該信號被髮送
request_scheduled 當引擎調度一個 Request 對象用於下載時,該信號被髮送
request_dropped 當一個請求,由引擎安排在稍後被下載時,被調度程序拒絕
response_received 當引擎從downloader獲取到一個新的 Response 時發送該信號
response_downloaded 當一個 HTTPResponse 被下載時,由downloader發送該信號
import scrapy from scrapy.xlib.pydispatch import dispatcher from scrapy import signals class JobboleSpider(scrapy.Spider): name = "jobbole" allowed_domains = ["blog.jobbole.com"] start_urls = ['http://blog.jobbole.com/all-posts/'] handle_httpstatus_list = [404] def __init__(self, **kwargs): self.fail_urls = [] dispatcher.connect(self.handle_spider_closed, signals.spider_closed) def handle_spider_closed(self, spider, reason): self.crawler.stats.set_value("failed_urls", ",".join(self.fail_urls)) def parse(self, response): if response.status == 404: self.fail_urls.append(response.url) self.crawler.stats.inc_value("failed_url")