5

多くの画像パイプラインがありますが、スパイダーごとに異なる保存方法を使用したいと考えています。

他のパイプラインで使用できることは知ってspider.nameいますが、画像パイプラインでそれを取得するにはどうすればよいですか

class MyImagesPipeline(ImagesPipeline):
   if spider.name  in ['first']:
    def get_media_requests(self, item, info):
4

3 に答える 3

5

スパイダーは引数として に渡されますprocess_item:

https://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html#item-pipeline-example

クラス全体で使用するために評価中に変数を設定するか、process_item が呼び出される前にスパイダーが必要な場合は自分でフックを実装することができます。

class MyImagesPipeline(ImagesPipeline):
    spider = None

    def process_item(self, item, spider):
        self.spider = spider
        if self.spider.name in ['first']:
            get_media_requests(item, info)
        return item

    def get_media_requests(self, item, info):
        # whatever

SpiderInfoまた、スパイダー属性を持つ内部メタ クラスを持つ基本クラスから直接情報を取得することもできます。

参照: https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/pipeline/media.py

于 2013-01-03T08:30:40.303 に答える