33

アイテムパイプラインからsettings.pyのスクレイプ設定にアクセスするにはどうすればよいですか。ドキュメントには、拡張機能のクローラーを介してアクセスできると記載されていますが、パイプラインのクローラーにアクセスする方法がわかりません。

4

4 に答える 4

28

わかりました。http://doc.scrapy.org/en/latest/topics/extensions.htmlのドキュメントには次のように書かれています。

Scrapy拡張機能(ミドルウェアとパイプラインも含まれます)のメインエントリポイントは、Scrapyクローラーを制御するメインオブジェクトであるCrawlerインスタンスを受け取るfrom_crawlerクラスメソッドです。そのオブジェクトを介して、設定、シグナル、統計にアクセスし、拡張機能がそのようなことをする必要がある場合は、クローラーの動作を制御することもできます。

だから、あなたは設定を取得する機能を持つことができます。

@classmethod
def from_crawler(cls, crawler):
    settings = crawler.settings
    my_setting = settings.get("MY_SETTING")
    return cls(my_setting)

次に、クローラーエンジンは、次のようにパイプラインのinit関数を呼び出しますmy_setting

def __init__(self, my_setting):
    self.my_setting = my_setting

そして、他の関数はself.my_setting、予想通り、でそれにアクセスできます。

または、from_crawler()関数でcrawler.settingsオブジェクトを__init__()に渡し、コンストラクターですべてを引き出す代わりに、必要に応じてパイプラインから設定にアクセスできます

于 2012-12-28T21:19:39.267 に答える
3

プロジェクト構造は非常にフラットです。

# pipeline.py
from myproject import settings
于 2014-11-28T07:38:44.287 に答える