信号器(signals)的使用
@导入信号器和分发器
from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals
@定义信号出发函数
def spider_open(self,spider):
#功能函数
print('*'*20,'active','*'*20)
@信号源类型
1.engine_started
scrapy.signals.engine_started()
当Scrapy引擎启动爬取时发送该信号。
该信号支持返回deferreds。
注解
该信号可能会在信号 spider_opened 之后被发送,取决于spider的启动方式。 所以不要 依赖 该信号会比 spider-opened 更早被发送。
2.engine_stopped
scrapy.signals.engine_stopped()
当Scrapy引擎停止时发送该信号(例如,爬取结束)。
该信号支持返回deferreds。
3.item_scraped
scrapy.signals.item_scraped(item, response, spider)
当item被爬取,并通过所有 Item Pipeline 后(没有被丢弃(dropped),发送该信号。
该信号支持返回deferreds。
参数:
item (Item 对象) – 爬取到的item
spider (Spider 对象) – 爬取item的spider
response (Response 对象) – 提取item的response
4.item_dropped
scrapy.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 的子类)
5.spider_closed
scrapy.signals.spider_closed(spider, rea