Scrapy - 仅在ImagesPipeline上启用代理

0 投票
2 回答
577 浏览
提问于 2025-04-30 17:03

我想知道是否可以只为图片下载功能启用代理?也就是说,我不想为爬虫本身启用代理,但在下载爬虫抓取的图片时希望使用代理。

我对文档中的这一部分有些了解: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 这个设置就可以了。

撰写回答