Python之Scrapy海报资源海量下载_java

简介

Python之Scrapy海报资源海量下载_java_02


今天小编给大家带来的是使用 Python 的 scrapy 框架快速写一个“千图网”的海报原图下载的爬虫,可以给设计专业的相关的人下载图片参考设计海报,也可在活动时,直接下载海报使用,目标“http://www.58pic.com/piccate/3-0-0-default-0_2_0_0_default_0-1.html


Python之Scrapy海报资源海量下载_java

文件获取

Python之Scrapy海报资源海量下载_java_02


关注公众号“爬虫康康”,回复关键字“千图网”获取源代码文件


Python之Scrapy海报资源海量下载_java

开发环境

及配置

Python之Scrapy海报资源海量下载_java_02


创建文件在“Python之Scrapy框架当当网口红爬虫”这篇中讲过,在此不重复。


Python之Scrapy海报资源海量下载_java

创建项目文件

Python之Scrapy海报资源海量下载_java_02


创建文件在“Python之Scrapy框架当当网口红爬虫”这篇中讲过,在此不重复。


Python之Scrapy海报资源海量下载_java

项目文件简介

Python之Scrapy海报资源海量下载_java_02


创建文件在“Python之Scrapy框架当当网口红爬虫”这篇中讲过,在此不重复。


Python之Scrapy海报资源海量下载_java

item.py编写

Python之Scrapy海报资源海量下载_java_02


Python之Scrapy海报资源海量下载_java_13


Python之Scrapy海报资源海量下载_java

settings.py配置

Python之Scrapy海报资源海量下载_java_02


一、配置爬虫是否遵守 robot 协议,默认是遵守,如下图


Python之Scrapy海报资源海量下载_java_16


       要改为不遵守,把 True 改为 False,如下图


Python之Scrapy海报资源海量下载_java_17


二、cookies 配置,为了让浏览器不能识别我们 本地的 cookies,识别不出是爬虫行为,如下图


Python之Scrapy海报资源海量下载_java_18


把注释删掉就启动了


Python之Scrapy海报资源海量下载_java_19


三、piplines.py 实体管道的开启,同上理,把注释删掉


Python之Scrapy海报资源海量下载_java_20


Python之Scrapy海报资源海量下载_java_21


Python之Scrapy海报资源海量下载_java

piplines.py编写

Python之Scrapy海报资源海量下载_java_23


Python之Scrapy海报资源海量下载_java_24


这里只有一个函数,就是专门下载图片的函数,关键步骤已经给出注释

在分析海报的 url 时,我们在源代码中看到的是缩略图的 url,要想找到原图 url 只需要点开这个海报打开对应的所在网址,在图片那里单击右键复制‘复制图片地址’,并不是原图的 url,缩略图并没有原图清晰,我们要处理缩略图的 url,缩略图与原图的url 是有着规律的,找到规律就行,在我的源码项目里面的 ‘url_comparison.txt’ 有说明

创建下载地址,下载图片,用了一个异常防止一个下载失败,而程序终止



Python之Scrapy海报资源海量下载_java

kouhong.py编写

Python之Scrapy海报资源海量下载_java_02


Python之Scrapy海报资源海量下载_java_27


这里是爬取缩略图 url 以及海报所对应的名称,使用 xpath 提取

在爬取缩略图 url 时要注意,每一页有 35 个海报,前 12 张与后 23 张海报的提取 url 的属性是不同的,我们要分开提取,然后合并成一个列表,属性如下图,第一张为前 12 张的 url 属性,第二章为后 23 张的 url 属性,虽然第二张图我们可以看到也有 ‘src’ 属性,但提取返回的结果是错误的


Python之Scrapy海报资源海量下载_java_28


Python之Scrapy海报资源海量下载_java_29


Python之Scrapy海报资源海量下载_java

测试运行

Python之Scrapy海报资源海量下载_java_02


Python之Scrapy海报资源海量下载_java_32