Scrapy广泛使用信号来通知特定事件发生的时间。 可以在Scrapy项目中捕获一些这些信号(例如,使用扩展名)来执行其他任务或扩展Scrapy的功能。
现在数据收集的基础上, 当检测到关闭的信号, 将对收集的404url拼接插入到的stats
简单的例子
1.在spider中导入库
from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals
2.定义spider关闭时需要处理的方法
def handle_spider_closed(self, spider, reason):
self.crawler.stats.set_value('failed_urls', ','.join(self.failed_urls))
pass
由于信号signals.spider_closed传递了两个参数, 这里定义的方法接收了这两个参数
spdier_closed
3.在初始化中与信号连接
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.failed_urls = []
dispatcher.connect(self.handle_spider_closed, signals.spider_closed)
4.运行结果
网友评论