我有很多圖像管道,但我想爲不同的蜘蛛使用不同的保存方法。我怎樣才能得到在圖像管道中的蜘蛛名稱
我知道,在其它管線我可以使用spider.name
,但我怎樣才能在圖像spipeline
class MyImagesPipeline(ImagesPipeline):
if spider.name in ['first']:
def get_media_requests(self, item, info):
我有很多圖像管道,但我想爲不同的蜘蛛使用不同的保存方法。我怎樣才能得到在圖像管道中的蜘蛛名稱
我知道,在其它管線我可以使用spider.name
,但我怎樣才能在圖像spipeline
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
imagepipeline沒有任何'process_item'方法 – user19140477031
@ user19140477031是的,它從'MediaPipeline'繼承它。參見[source at github](https://github.com/scrapy/scrapy/斑點/主/ scrapy /了contrib /管線/ media.py) –
info.spider
是你想要的。
def get_media_requests(self, item, info):
info.spider.name
你能告訴我們更多的代碼嗎?你到底需要什麼,你怎麼稱呼它? – miku
我只需要檢查蜘蛛的名字,然後做點什麼。我將更新代碼 – user19140477031