如何在图像管道中获取蜘蛛名称

时间:2013-01-03 06:53:37

标签: python scrapy

我有很多图像管道,但我想为不同的蜘蛛使用不同的保存方法。

我知道在其他管道中我可以使用spider.name但是我怎样才能在图像spipeline中得到它

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

3 个答案:

答案 0 :(得分: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

您还可以直接从基类检索信息,基类具有带有spider属性的内部元类SpiderInfo

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

答案 1 :(得分:1)

(list(set(list1) - set(list2))就是你想要的。

info.spider

答案 2 :(得分:-1)

尽管自发布以来已经很长时间了,但在这里我提出了一个解决方案。在管道中,查找名称变量:spider.name

我希望您觉得它有用。