Scrapy管道spider_opened和spider_closed没有被调用

时间:2010-11-06 13:29:33

标签: python pipeline scrapy

我在scrapy管道上遇到了一些麻烦。我的信息正在从网站上删除,并正确调用process_item方法。但是,没有调用spider_opened和spider_closed方法。

class MyPipeline(object):

    def __init__(self):
        log.msg("Initializing Pipeline")
        self.conn = None
        self.cur = None

    def spider_opened(self, spider):
        log.msg("Pipeline.spider_opened called", level=log.DEBUG)

    def spider_closed(self, spider):
        log.msg("Pipeline.spider_closed called", level=log.DEBUG)

    def process_item(self, item, spider):
        log.msg("Processsing item " + item['title'], level=log.DEBUG)

__init__process_item日志记录消息都显示在日志中,但spider_openspider_close日志消息不是。

我需要使用spider_opened和spider_closed方法,因为我想使用它们来打开和关闭与数据库的连接,但是日志中没有显示任何内容。

如果有人提出任何非常有用的建议。

2 个答案:

答案 0 :(得分:9)

抱歉,发布之后发现它。你必须添加:

dispatcher.connect(self.spider_opened, signals.spider_opened)
dispatcher.connect(self.spider_closed, signals.spider_closed)

__init__中,否则它永远不会收到调用它的信号

答案 1 :(得分:5)

正确的方法名称是open_spiderclose_spider,而不是spider_openedspider_closed。这里记录了:http://doc.scrapy.org/en/latest/topics/item-pipeline.html#writing-your-own-item-pipeline