img src 文件流_scrapy配置文件下载图片

滑稽研究所 a25882510be764aeebc0eb55254d7fc0.gif

scrapy配置文件下载图片

哈喽,大家好呀,我是滑稽君。平时我们利用爬虫下载图片或者文件时,都离不开requests库。本期我们就来聊聊通过配置scrapy文件来下载图片容易跳的坑。

38a1bcd3a13c2f0b8494da8d267e4cdc.gif

视频讲解:

我们在开始创建一个scrapy项目时,大家会发现除去spiders文件,scrapy还帮我们创建了一些其他的文件。如下图,我们可以看到settings文件我们上期用到过,我们可以用它来配置一些基础设置,如是否遵守robots协议,伪装自己的头部信息等等。那剩下的如pipelins和items文件就没有用吗?当然不是,当我们需要下载文件时,他们就派上了用场。

3e95405e8841c004a0ebf8139e0de2c5.png

下载图片之前我们需要做一些准备工作:

1.配置items文件

我们把图片的url交给items文件。

41ff1ee4732ea0b03ba483e4392821cd.png

2.配置pipelines文件

这里我们需要做的很简单,把爬取到的图片的url交给requests,它将帮我们完成下载。注意如果传入的不是集合的形式,直接yield即可。但既然都用上爬虫了,我们肯定不只是想要一两张图片那么简单,且通常extract()出来的都是list的格式。这样更方便我们遍历。还是提醒一下,大家不要忘记导入requests库。

1e89160b2e30bf256f9b0c47ffcabc50.png

3.配置settings文件

除了我们之前讲过的基础配置外,我们还需调整如下参数。作用依次为传入图片url、设置最终储存位置、设置爬取的时间间隔(防止频繁操作被踢出)、开启图片下载中间件。

需要注意的是储存图片的文件夹需要我们提前创建好。否则爬虫默认你的通道是关闭的。28~29行是settings文件里自带的,不过默认是被注释掉了。我们需要去掉注释符,然后添加自己新定义的通道。

80ed0d4d298badfb6d41895d6a4710bc.png

4.主代码

import scrapyfrom ImageSpider.items import ImagespiderItemfrom scrapy.pipelines.images import ImagesPipelineclass ImgspiderSpider(scrapy.Spider):    name = 'ImgSpider'     allowed_domains = ['movie.douban.com']    start_urls = ['https://movie.douban.com/top250']    def parse(self, response):        item = ImagespiderItem()  # 实例化item        #imgurls = response.xpath('//div[@]/p/img/@src').extract() # 注意这里是一个集合也就是多张图片        imgurls = response.xpath('//ol[@]/li//a//img/@src').extract()  # 注意这里是一个集合也就是多张图片        item['imgurl'] = imgurls        print(imgurls)        next =  response.xpath('//span[@]/a/@href').extract_first()        if next !=None:            next_url = "https://movie.douban.com/top250" + next            yield scrapy.Request(next_url)        yield item        pass        #scrapy crawl ImgSpider

06b54efcbbb955aceac6e8b8358612f5.png

开头一定要导入我们配置的文件,中间部分是我们对图片url的提取和处理。结尾是向item传递url以及翻页处理。豆瓣top250有10页,我们是贪婪的爬虫,我们全都要。

运行结果:

f1befcfdfc1689deedc57346148d2856.png

可以看到250个封面我们全都爬取到了。说明我们的代码没有错误。

你当然可以在主代码中直接写一个requests方法。可scrapy已经给我们提供了打火机,为什么我们还要选择火柴呢?我们需要做的只是学会怎样去使用这个‘打火机’。

通过配置scrapy文件来下载图片的好处也是显而易见的。主代码更加简洁,层次分明。后续也便于维护。缺点是配置文件的过程较为复杂,对新手不太友好。一个参数错误可能就会导致图片下载失败。网上大部分教程都不是很全面,所以滑稽君帮大家把坑都踩了一遍。

621ed2c35c1015af14a737f78fbce27f.gif ❂ END

 咳咳,视频讲解会把完整的思路串联起来过一遍。还有想要一起探讨的问题私信滑稽君。欢迎‘骚扰’。

954952de53bce8deb24c8903db9c9c4b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值