scrapy 继承ImagesPipeline类保存图片,解决对相同url图片地址发起重复请求方案

我们在网站爬取图片时,会遇到图片url的地址相同,但是图片不一样的情况,使用requests.get和urllib.request.urlretrieve的方法是可以重复下载的,但是效率太低,这时我们就想到了scrapy的内置方法继承ImagesPipeline类来下载图片,提高效率。但是此时我们会遇到一个问题,那就是scrapy会有自动去重功能,这时我们会想到,那我加dont_filter=True不就可以了,不让他去重。但是当我们运行后会发现,没有起到作用。

解决方法:

这时我们需要修改scrapy ImagesPipeline类的底层源码,也可以重写他的方法,奈何本人还没有到那种境界,所以这里我们进行框架源码的修改。

1.在我们继承ImagesPipeline时**我们按住ctrl键,鼠标左键点击ImagesPipeline进入他的父类

在这里插入图片描述

2.点击后进入这个界面,在点击FilePipeline,

在这里插入图片描述

3.相同操作,点击MediaPipeline

在这里插入图片描述

4.最后进入到最底层MediaPipeline

在这里插入图片描述

5.找到100行至109行

在这里插入图片描述

6.对红色框内的进行注释即可解决该问题

如下:

注意,如果你是第一次注释框架源码,它会跳一个框出来,默认点ok就行了
在这里插入图片描述

然后在运行代码,问题就解决了,但是如果多个项目同时运行势必会影响到其他项目,所以如果可以的话还是重写该方法为好,奈何境界不够,需努力修行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值