13

スクレイピーパイプラインで問題が発生しています。私の情報はサイトからスクレイピングされており、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_itemspider_openspider_close

Spider_opened メソッドと Spider_closed メソッドを使用してデータベースへの接続を開いたり閉じたりする必要がありますが、それらのログには何も表示されません。

誰かが非常に役立つことを示唆している場合。

4

2 に答える 2

11

すみません、投稿直後に見つけました。追加する必要があります:

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

それ以外の場合は、__init__それを呼び出すための信号を受信しません

于 2010-11-06T13:39:49.793 に答える
6

適切なメソッド名はopen_spiderand close_spider、 not spider_openedandspider_closedです。ここに文書化されています: http://doc.scrapy.org/en/latest/topics/item-pipeline.html#writing-your-own-item-pipeline

于 2014-05-12T19:02:53.480 に答える