spider_closed函数未触发
我想在爬虫工作完成后记录一些数据。
我在我的爬虫里面写了这个函数。
def spider_closed(self, spider):
log.msg('The spider {0} finished working on'.format(self.name), level=log.INFO)
但是这个函数没有被调用。
我使用的是scrapy 0.20和python 2.7
请注意,我可以把任何东西记录到日志里,实际上我已经记录了很多数据,并且在我的日志文件中可以看到这些数据。所以,记录功能是正常工作的。
编辑
我想我需要发送一个信号 signals.spider_closed
,但我不知道该怎么做。
1 个回答
5
你需要把你的方法作为一个 receiver
附加到 SignalManager
的信号调度器上:
from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals
class MySpider(Spider):
def __init__(self, *args, **kwargs):
dispatcher.connect(self.spider_closed, signal=signals.spider_closed)
super(MySpider, self).__init__(*args, **kwargs)
def spider_closed(self, spider):
log.msg('The spider {0} finished working on'.format(self.name), level=log.INFO)
另外,看看相关的讨论: