spider_closed函数未被触发

时间:2014-04-21 15:14:38

标签: python scrapy

我想在蜘蛛完成工作时记录一些数据。

我在蜘蛛里面做了这个功能。

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 个答案:

答案 0 :(得分:3)

您应将方法作为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)

另见相关主题: