【问题标题】:Scrapy pipeline open_sider not being calledScrapy管道open_sider没有被调用
【发布时间】:2012-10-08 20:25:35
【问题描述】:

我看到了this question,我看到了this question,但the official Scrapy page on pipelines 没有提及信号。

这是我目前的代码:

import sqlite3
import datetime
from scrapy import signals
from scrapy.xlib.pydispatch import dispatcher
from scrapy import log

class Sqlite3StorePipeline(object):
    def __init__(self):
        print 'wtf'
        dispatcher.connect(self.open_spider, signals.spider_opened)
        dispatcher.connect(self.close_spider, signals.spider_closed)

    def open_spider(self, spider):
        print 'wtf2'
        ...

当我使用命令scrapy crawl <spider name> 运行我的蜘蛛时,我只看到“wtf”而不是“wtf2”正在输出。

如何让我的open_spider 函数被调用?

【问题讨论】:

    标签: python screen-scraping scrapy web-crawler


    【解决方案1】:

    我现在正在玩 scrapy,到目前为止,我在 stdout 方面遇到了奇怪的问题。你试过记录'wtf'2吗?即

        def open_spider(self,spider):
            spider.log('wtf2 from spider %s' % spider.name)
    

    【讨论】:

    • 嗯,有趣。我也用 spider.log 尝试过。那里没有运气。我很确定该函数没有被调用,因为如果它被调用,我的数据库将以某种方式被初始化,而它不是。
    【解决方案2】:

    您使用的是哪个版本的scrapy?信号 API 大约 7 个月前是 changed,影响 0.15 及更高版本。

    【讨论】:

    • 我使用的是 Scrapy 14.4。我应该升级到开发分支吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    相关资源
    最近更新 更多