scrapy怎么爬取站长素材中的高清图片?主要思路是什么?
scrapy怎么爬取图片。我们以爬取站长素材中的高清图片为例开始,我们今天的步骤讲解,在讲解之前我们首先梳理下大概的思路。
1.scrapy爬取图片的主要思路是什么?
scrapy爬取图片和爬取文本信息的前几步都是一致的都需要经过这几个步骤:
建立文件夹及爬虫文件--发送请求--解析数据--数据封装到item中--提交到管道
不同之处在于,管道的设置,我们通过前几节课的回顾,获取文本内容中的管道的设置,只需要在pipeline中设置好存储的位置并导入封装的item数据即可,而爬取图片,我们不能再用现成的管道修改,需要我们引入imgspipeline类,它是专门存储图片的类。
2.新建文件夹以及爬虫文件。
3.发起请求
在我们新建的爬虫文件(img)中修改我们的URL地址
4.数据解析
通过检查-network我们找到图片所对应的链接并编写解析代码,并测试是否能获取到图片的链接(如下图),需要注意的是,在测试之前,需要在设置文件夹(setting)中,设置好useragent以及robots参数
5.将解析数据封装到item中
首先将打开item文件中,设置属性src,代码如下:
然后回到爬虫文件,导入刚才的item类并封装解析的数据,并提交item到管道代码如下:
对管道进行设置操作,首先我们知道要想对图片进行下载,需要先获取到图片的链接,然后对图片的链接发送请求,之后保存文件即可,按照这个思路我们就可以对管道进行设置了:
1.首先打开Pipelines文件夹
因为我们不能再像之前存储文本一样,使用之前的管道类(Pipeline),我们需要用到新的存储图片的管道类ImagesPipeline,因此我们需要先导入该类
2.定义一个Images类
将原本的管道类我们注释掉,手动进行定义一个类
3.发送请求
导入该类以后,我们再管道中完成对图片链接发送请求、保存数据等操作,首先定义一个发送请求函数,并完成发送请求操作:
4.保存数据
接着我们再定义一个保存数据的函数,并设置好存储的文件名,然后存储的路径需要在设置中(setting)文件中,添加IMAGE_STORE设置好存储的路径:
5.返回item
我们定义一个item函数用来返回item,这一步,跟文本爬取大同小异,文本爬取也是返回item。这样我们就把管道设置好了
6.开启管道通道
需要注意的是,因为管道是我们新定义的类,因此需要将名字改为我们第二步定义的管道名字