Scrapy - 仅在ImagesPipeline上启用代理

时间:2014-10-30 19:03:45

标签: python scrapy

是否可以仅为ImagesPipeline启用代理?意思是,我不想为蜘蛛启用代理,但是当我下载蜘蛛产生的图像时,我确实想要代理。

我熟悉文档的这一部分:http://doc.scrapy.org/en/latest/topics/downloader-middleware.html#scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware

但不知道如何使用ImagePipeline实现它。我想我需要编写一个这里讨论的自定义图像管道:http://doc.scrapy.org/en/latest/topics/images.html?highlight=image%20download#module-scrapy.contrib.pipeline.images

但我不是百分百肯定。有什么反馈吗?

2 个答案:

答案 0 :(得分:2)

对于那些查看其他答案的人来说,此代码可以在自定义图像管道中启用代理。

class MyImagesPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        meta = {'proxy': 'http://192.168.1.1:80/'}
        for image_url in item['image_urls']:
            yield scrapy.Request(image_url, meta=meta)

答案 1 :(得分:0)

您可以解决此问题,相反,禁用dont_proxy元的蜘蛛请求代理。