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