Scrapy - 仅在ImagesPipeline上启用代理
我想知道是否可以只为图片下载功能启用代理?也就是说,我不想为爬虫本身启用代理,但在下载爬虫抓取的图片时希望使用代理。
我对文档中的这一部分有些了解:http://doc.scrapy.org/en/latest/topics/downloader-middleware.html#scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware
但我不知道如何将其与图片下载功能结合起来。我觉得我需要写一个自定义的图片下载管道,相关内容可以在这里找到:http://doc.scrapy.org/en/latest/topics/images.html?highlight=image%20download#module-scrapy.contrib.pipeline.images
不过我不是百分之百确定。有没有什么建议?
2 个回答
3
如果你在查看其他答案,这段代码可以用来在自定义图像处理流程中启用代理。
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)
0
你可以通过相反的方法来解决这个问题,也就是对爬虫请求禁用代理,使用 dont_proxy
这个设置就可以了。