8

私はスクレイピーなpipelines.pyを持っていて、与えられた引数を取得したい. 私の Spider.py では完璧に動作します:

class MySpider( CrawlSpider ):
    def __init__(self, host='', domain_id='', *args, **kwargs):

        super(MySpider, self).__init__(*args, **kwargs)
        print user_id
        ...

さて、「domain-123.db」のような sqlite データベースを作成するには、pipelines.py に「user_id」が必要です。問題についてウェブ全体を検索しましたが、解決策が見つかりません。

誰かが私を助けることができますか?

PS: はい、spyer.py のようなパイプライン クラス内で super() 関数を試してみましたが、機能しません。

4

2 に答える 2

13

spiderのコンストラクタ内に引数を設定します。

class MySpider(CrawlSpider):
    def __init__(self, user_id='', *args, **kwargs):
        self.user_id = user_id

        super(MySpider, self).__init__(*args, **kwargs) 

そしてopen_spider()、パイプラインのメソッドでそれらを読み取ります:

def open_spider(self, spider):
    print spider.user_id
于 2014-12-16T21:04:54.787 に答える