可以说,我是因为想批量下载一个网站的图片,才开始学的python爬虫。当一张一张图片自动下载下来时,满满的成就感,也满满的罪恶感……哈哈哈!!!窈窕淑女,君子好逑,这篇文章就讲讲我采集的第一个网站:
一、实现目标
根据一个图集的入口地址,下载该图集中的所有图片。图集的入口地址如下:
https://www.yeitu.com/meinv/xinggan/20231110_33358.html
二、网站分析
我们的目标是下载图片,那就需要得到图片文件的地址。
而图片文件的地址肯定是在图片详情页的html代码中,因此,只需要得到图片详情页的地址,就可以从它的html代码中获取图片文件的地址。
而图片详情页的地址与图片集入口地址存在着联系,即图片集入口地址加上图片序列号可得到图片详情页的地址。
总结一下,图片集入口地址——图片详情页地址——图片文件地址。
三、代码编写
- 通过图片集入口地址获取该图片集的图片总数
def getPicCount(picSetPageUrl, headers):
response = requests.get(url=picSetPageUrl, headers=headers)
html = etree.HTML(response.text)
picCount = html.xpath("//div[@class='pages uk-text-center']/a[last()-1]/text()")[0]
return int(picCount)
- 通过图片集入口地址与图片序列号得到图片详情页地址的列表
def getPicPageUrlList(picSetPageUrl, picCount):
picPageUrlList = []
for index in range(picCount):
picPageUrl = picSetPageUrl.replace('.html', '_'+str(index+1)+'.html')
picPageUrlList.append(picPageUrl)
return picPageUrlList
- 通过图片详情页地址的列表得到图片文件地址的列表
def getPicUrlList(picPageUrlList, headers):
picUrlList = []
for picPageUrl in picPageUrlList:
response = requests.get(url=picPageUrl, headers=headers)
html = etree.HTML(response.text)
picUrl = html.xpath("//div[@class='article-body cate-6']//img/@src")[0]
picUrlList.append(picUrl)
return picUrlList
- 通过图片文件地址下载图片文件
def getPic(index, picUrl, headers):
suffix = picUrl.split(".")[-1]
response = requests.get(url=picUrl, headers=headers)
with open('output/'+str(index+1)+'.'+suffix, 'wb') as file:
file.write(response.content)
四、源码获取
感兴趣的小伙伴,完整代码和全套Python学习资料免费赠送,具体看这里。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
