文章目录
引言
大家好!这一期的文章来跟大家讲讲如何使用 Python Scrapy 框架实现对网页上图片的爬取并大量下载。我们以网易旗下的阴阳师手游为例,给大家演示一下游戏壁纸的抓取过程。
第一步:分析网页 html 结构
首先,我们打开阴阳师手游的官网,进入到游戏壁纸下载页面:
将网页下拉,我们还能看到更多的排成三列的壁纸图片:
按F12打开控制台,Shift + Ctrl + C 组合键开启查看网页元素的模式,然后将鼠标移动到某一张壁纸上面,选择一个分辨率按钮点击,我们可以看到相对应的图片标签:
知道了图片url的信息,并不代表这些元素一定包含在网页的静态页面里。为了确保我们的爬虫能够从网页中拿到这个标签,我们来右键点击页面,查看网页源代码:
进入网页源码后,将页面往下拉,我们可以看到一个个 img 标签以相同的形式分装在不断重复的 div 里面:
每一个壁纸的图片地址,都封装在一个 item 下的 cover 下的 mask 中,我们只需要用 CSS 选择器或者 XPath 选择器匹配这些标签就能够顺利获取图片地址。好,很有精神!接下来让我们开启一个爬虫项目来爬取这些壁纸吧。
第二步:使用 Scrapy 框架构建爬虫程序
配置 setting.py
工欲善其事,必先利其器。首先我们在 settings.py 文件中配置好IMAGE相关的属性:
IMAGES_URLS_FIELD
定义了我们之后获取图片URL的字段,我们将这个字段名设置为 image_url
。
IMAGE_STORE
给出了图片保存的目录位置,我们把爬到的图片放在 [项目位置]/images/yys 文件夹下。
IAMGES_EXPIRES
给出了不重复爬取图片的天数,定为90天。
items.py 文件下创建图片 item 类
打开 items.py 文件,新建一个类,命名为 WallpaperYYSItem
。这里一定需要一个 image_url
字段,之后会通过 ImagesPipeline
对该字段中的图片地址请求下载。