Scrapy使用信号来通知scrapy启动和关闭等事情的发生。可以在Scrapy项目中捕捉一些信号(使用 extension)来完成额外的工作或添加额外的功能,扩展Scrapy。
scrapy内置信号
engine_started = object()
engine_stopped = object()
spider_opened = object()
spider_idle = object()
spider_closed = object()
spider_error = object()
request_scheduled = object()
request_dropped = object()
response_received = object()
response_downloaded = object()
item_scraped = object()
item_dropped = object()
engine_started
当Scrapy引擎启动爬取时发送该信号。
该信号支持返回deferreds。
该信号可能会在信号 spider_opened
之后被发送,取决于spider的启动方式。 所以不要根据该信号来比较哪个更早被发送。
engine_stopped
当Scrapy引擎停止时发送该信号(例如,爬取结束)。
该信号支持返回deferreds。
item_scraped
当item被爬取,并通过所有 Item Pipeline 后(没有被丢弃(dropped),发送该信号。
该信号支持返回deferreds。
scrapy.signals.
item_scraped
(item, response, spider)
- item (
Item
对象) – 爬取到的item - spider (
Spider
对象) – 爬取item的spider - response (
Response
对象) – 提取item的response
item_dropped
当item通过 Item Pipeline ,有些pipeline抛出 DropItem
异常,丢弃item时,该信号被发送。
该信号支持返回deferreds。
scrapy.signals.
item_dropped
(item, exception, spider)
- item (
Item
对象) – Item Pipeline 丢弃的item - spider (
Spider
对象) – 爬取item的spider - exception (
DropItem
异常) – 导致item被丢弃的异常(必须是DropItem