多くの画像パイプラインがありますが、スパイダーごとに異なる保存方法を使用したいと考えています。
他のパイプラインで使用できることは知ってspider.name
いますが、画像パイプラインでそれを取得するにはどうすればよいですか
class MyImagesPipeline(ImagesPipeline):
if spider.name in ['first']:
def get_media_requests(self, item, info):
スパイダーは引数として に渡されます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