2024-07-04 07:18:39 发布
网友
我有许多图像管道,但我想对不同的蜘蛛使用不同的保存方法。在
我知道在其他管道中我可以使用spider.name,但是如何在图像spipeline中得到它呢
spider.name
class MyImagesPipeline(ImagesPipeline): if spider.name in ['first']: def get_media_requests(self, item, info):
info.spider就是你想要的。在
info.spider
def get_media_requests(self, item, info): info.spider.name
spider作为参数传递给process_item:
process_item
https://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html#item-pipeline-example
您可以在求值期间设置一个变量,以便在类范围内使用;或者,如果您需要在调用process_项之前使用spider,则可以自己实现一个钩子。在
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
您还可以直接从基类中检索信息,基类有一个具有spider属性的内部元类SpiderInfo。在
SpiderInfo
请参见:https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/pipeline/media.py
info.spider
就是你想要的。在spider作为参数传递给
process_item
:https://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html#item-pipeline-example
您可以在求值期间设置一个变量,以便在类范围内使用;或者,如果您需要在调用process_项之前使用spider,则可以自己实现一个钩子。在
您还可以直接从基类中检索信息,基类有一个具有spider属性的内部元类
SpiderInfo
。在请参见:https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/pipeline/media.py
相关问题 更多 >
编程相关推荐