別のドメインで Web ページを取得したいということは、「scrapy crawl myspider」コマンドで別のスパイダーを使用する必要があることを意味します。ただし、Web ページのコンテンツが異なるため、データをデータベースに入れるには別のパイプライン ロジックを使用する必要があります。しかし、スパイダーごとに、settings.py で定義されたすべてのパイプラインを通過する必要があります。スパイダーごとに個別のパイプラインを使用する他のエレガントな方法はありますか?
質問する
6044 次
3 に答える
9
ITEM_PIPELINES
設定は、エンジンの始動時にプロジェクト内のすべてのスパイダーに対してグローバルに定義されます。その場でスパイダーごとに変更することはできません。
考慮すべきいくつかのオプションを次に示します。
パイプラインのコードを変更します。
process_item
パイプラインのメソッドでスパイダーから返されたアイテムの処理をスキップ/続行します。例:def process_item(self, item, spider): if spider.name not in ['spider1', 'spider2']: return item # process item
クロールの開始方法を変更します。パラメータとして渡されたスパイダー名に基づいてスクリプトから
ITEM_PIPELINES
実行し、呼び出す前に設定をオーバーライドしますcrawler.configure()
。
以下も参照してください。
それが役立つことを願っています。
于 2013-06-29T19:05:39.017 に答える