人生苦短,我用 Python
前文传送门:
引言
最近小编工作比较忙,每天能拿来写内容的时间都比较短。
刚更新完成的 urllib 基础内容太干了,跟牛肉干一样,咬着牙疼。
今天稍微空一点,决定好好放浪一下形骸,写点不正经的内容。
目标准备
看了标题各位同学应该知道小编今天要干啥了,没毛病,小编要掏出自己多年的珍藏分享给大家。
首先,我们要确定自己的目标,我们本次实战的目标网站是:https://www.mzitu.com/ 。
随便找张图给大家感受下:
小编要是上班看这个,估计是要被老板吊起来打的。
如果是进来找网址的,可以直接出去了,下面的内容已经无关紧要。
抓取分析
先使用 Chrome 浏览器打开网站 https://www.mzitu.com/ ,按 F12 打开开发者工具,查看网页的源代码:
可以看到,这里是一个 a 标签包裹了一个 img 标签,这里图片的显示是来源于 img 标签,而点击后的跳转则是来源于 a 标签。
将页面滚动到最下方,看到分页组件,点击下一页,我们观察页面 URL 的变化。
当前页面上的图片只是缩略图,明显不是我们想要的图片,随便点击一个图片,进入内层页面:https://www.mzitu.com/214337/ ,可以发现,这里图片才是我们需要的图片:
和前面的套路一样,我们往下翻几页,可以发现 URL 的变化规律。
URL 由第一页的 https://www.mzitu.com/214337/ 变化成为 https://www.mzitu.com/214337/2 ,同样是最后一位的数字增加,尝试当前页面最大值 66 ,发现依然可以正常打开,如果变为 67 ,则可以看到当前页面的标题已经显示为 404 (页面无法找到)。
爬取首页
上面我们找到了页面变化的规律,那么我们肯定是要从首页开始爬取数据。
接下来我们开始用代码实现这个过程,使用的请求类库为 Python 自带的 urllib ,页面信息提取采用 xpath 方式,类库使用 lxml 。
关于 xpath 和 lxml 是什么东西,小编后续会慢慢讲,感兴趣的同学可以先行百度学习。
下面我们开始写代码。
首先是构建请求头:
# 请求头添加 UA
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64