1

githubからscrapy-redisをダウンロードし、指示に従って実行しましたが、失敗して次のエラーが発生しました:

2013-01-04 17:38:50+0800 [-] ERROR: Unhandled error in Deferred:
2013-01-04 17:38:50+0800 [-] Unhandled Error
        Traceback (most recent call last):
          File "/usr/local/lib/python2.7/dist-packages/Scrapy-0.16.3-py2.7.egg/scrapy/cmdline.py", line 138, in _run_command
            cmd.run(args, opts)
          File "/usr/local/lib/python2.7/dist-packages/Scrapy-0.16.3-py2.7.egg/scrapy/commands/crawl.py", line 44, in run
            self.crawler.crawl(spider)
          File "/usr/local/lib/python2.7/dist-packages/Scrapy-0.16.3-py2.7.egg/scrapy/crawler.py", line 47, in crawl
            return self.engine.open_spider(spider, requests)
          File "/usr/local/lib/python2.7/dist-packages/Twisted-12.2.0-py2.7-linux-i686.egg/twisted/internet/defer.py", line 1187, in unwindGenerator
            return _inlineCallbacks(None, gen, Deferred())
        --- <exception caught here> ---
          File "/usr/local/lib/python2.7/dist-packages/Twisted-12.2.0-py2.7-linux-i686.egg/twisted/internet/defer.py", line 1045, in _inlineCallbacks
            result = g.send(result)
          File "/usr/local/lib/python2.7/dist-packages/Scrapy-0.16.3-py2.7.egg/scrapy/core/engine.py", line 218, in open_spider
            scheduler = self.scheduler_cls.from_crawler(self.crawler)
        exceptions.AttributeError: type object 'Scheduler' has no attribute 'from_crawler'

これを処理する方法?ありがとう。

4

2 に答える 2

6

問題は、scrapy-redis が 1 年前に、scrapy 0.13 を使用して作成されたことです。Scrapyの現在のバージョンは 0.17 で、scrapy/core/engine.pyの現在のソース コードを昨年のバージョンと比較すると、エラーの原因となっている行がこれら 2 つのバージョンの間のある時点で追加されていることがわかります (実際、2012 年 8 月 21 日に追加されました)

つまり、scrapy-redis が現在のバージョンの Scrapy と互換性がなくなったため、エラーが発生しています。開発者に連絡して、プロジェクトがまだアクティブかどうかを尋ねる価値があるかもしれません。それ以外の場合は、リポジトリをフォークして自分で修正する必要があります。

于 2013-01-04T15:33:06.303 に答える
1

古い Scrapy-redis にいくつかの変更を加えて、Scrapy 0.17 と互換性を持たせました。完全にはテストされていません。ここにコードがあります。

于 2013-01-05T04:58:23.057 に答える