萌宠图片定向爬虫实例
应我们的学习群的广大群众的要求,小编在此出一个爬取萌宠图片的小教程。感兴趣的朋友们可以改改代码就能爬取其他类型的图片,比如说美女、风景等。希望大家赏图愉快。
在这里我们选取的是一个国外网站pexels,里面的图片质量很高而且很有美感。虽然是国外网站,但相对百度图片来说好爬一些。大家直接百度pexels官网就可以啦。
01
准备工作
首先,因为我们这次访问的是国外网站,而这个网站的服务器在国外。我用学校的破网访问时真的是慢到怀疑人生。于是想到了改ip的方法。
这个ip我查过了的所以在下图直接给出服务器ip。大家可以到百度经验搜索如何改hosts,然后把hosts文件改成下图:
重点是最后一行。这时访问速度就变得超快了。当然本身访问就很快的就不用去改hosts了。
再然后就是跟往常一样安装我们需要的库: requests库,bs4库(具体安装方法参考
python网络爬虫入门实例:中国大学排名定向爬虫
)
02
案例功能描述
目标:获取pexels网站上的宠物图片
输出:保存到自定义文件中
技术路线:requests-bs4
03
程序设计结构
从https://www.pexels.com/search/pets/获取宠物目录下的图片总列表(如果你想搜美女,可以把pets改为women)
根据图片列表逐个到单个图片页面进行解析并下载
将图片存储到自定义文件夹
04
具体代码
1.导入模块
Python os模块包含普遍的操作系统功能,是系统自带,不需要安装。
2.定义get_html_text(url)函数,通过此函数获得url对应的网页界面:
3.定义get_photo_list(lst, pets_url)函数,通过此函数将空列表lst变成包含所有宠物图片url的列表的lst。这一函数的编写过程中需要查看https://www.pexels.com/search/pets/网页源代码的结构,从而通过beautifulsoup库正确提取我们需要的单个图片链接
html源代码展示:
4.定义get_photos(lst, root)函数。其功能是使用requests库来获取lst中每个图片的url,并将其存放到我们设置的路径中
5.定义主函数,调用主函数。完成此次代码编写。
05
结果展示
宠物图片的结果展示在02节的时候已经给出了,这里给一个风景的结果展示。其实想得到风景的图片也非常简单,大家自己开动脑筋想一想吧~
06
缺点与不足
其实认真运行过代码和查看过网页的人可以发现以下不足:
网页上每类图片是非翻页式的呈现方式,但是其源代码却没有相应的链接,因为网页是随着鼠标的滑动自动由js添加图片的。我目前还没学会这个问题的处理方法。因此爬取数量有限。有其他不足和改进欢迎大家到后台或者我们的微信群交流。
关注我们
扫码加入机器学习小组
(为保证学习群质量请先加管理员经验证后自动加群)
领取专属 10元无门槛券
私享最新 技术干货