我的输油管出了点问题。我的信息正在从站点中被抓取,并且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_open和spider_close日志记录消息不显示。
我需要使用spider_opened和spider_closed方法,因为我想使用它们打开和关闭到数据库的连接,但是它们的日志中没有显示任何内容。
如果有人有任何建议,那将是非常有用的。
发布于 2010-11-06 21:39:50
对不起,我刚发完这篇文章就找到了。您必须添加以下内容:
dispatcher.connect(self.spider_opened, signals.spider_opened)
dispatcher.connect(self.spider_closed, signals.spider_closed)在__init__中,否则它永远不会收到调用它的信号
发布于 2014-05-13 03:02:53
正确的方法名称是open_spider和close_spider,而不是spider_opened和spider_closed。文档记录在这里:http://doc.scrapy.org/en/latest/topics/item-pipeline.html#writing-your-own-item-pipeline。
https://stackoverflow.com/questions/4113275
复制相似问题