由于工作中DIY产品,需要用到大量图片。Python小白,简单记录下网页爬取的一些常规思路(考虑到他人服务器之类的尊重及不公开,只展现整体结构代码,不显示壁纸网址)。
1.载入所需模块+后续补充
2.打开壁纸网页
3.网页结构:一般来说,会有3个层级关系,在一个一级类目(Sports、Music、Movie等)下面,会有对应的二级类目(足球、篮球、射箭等),在三级类目会展现具体的图片缩略图,如果点击图片的话,会获得相关的全景图(放大图/原图,暂不考虑选择分别率)。
4.保存图片
由于目前水平有限,只做最简单的三级页面的考虑,暂时爬取二级类目主题集,也会爬取三级类目的图片,并不会将两者串联起来。
一、导入模块
需要导入requests请求包,BeatifulSoup网页解析包,os(Operation System)模块用于后面定义下载路径及文件夹命名,uuid只是学习着使用,给文件图片自个命名(还在具体了解中)
简单代码二、浏览网页页面结构 二级页面结构.png
习惯性下拉到底,简单过下二级页面的布局。F12检查调出网页代码,可以从图中看出,每一个主题图库都有在相应的div标签中,而这些div里面的有相应合集的网址。
我们再接着看下点进图册里,所显示的内容及布局。 三级页面结构我们会发现data-download里有个图片地址,正好也是我们所定位的图片页面的地址,尝试将地址复制粘贴到浏览器中查看下是什么。原来就是原图,那么,这个地址就是我们所需要爬取的图片链接。
将本页网址代码写入url,后请求链接,解析网页代码。并通过css Ctrl+F精确定位76张图片,得到的标签元素是‘div.wrapper a img'。由于本页图片存在76项,需要依次获取图片地址,需要进行for循环。最后完成下载图片代码,即可get_image函数定义,开始爬取工作。
三、定义下载路径
考虑到文件夹不一定存在,所以需要进行判断文件夹是否存在。如果不存在即创建,后打开文件夹并载入图片,自定义命名图片文件名。
四、有待完善之处
1.对于文件夹的命名,应该是能够调用图库本身的文件名+数量来命名的;
2.对于文件的命名,通过主题+序号的方式来编号是需要,而不是通过uuid1来命名文件,不便于后期使用和管理。
3.针对于单个文件的爬取,后面需要提升到二级页面的爬取,需求是一下子能够完整一个大类的图片获取。速度可以慢些,放在后台自己处理。因为自己按三级页面的爬取方式去爬取二级页面的所有图库会疯掉,极其浪费时间,这块有待加强实现。
4.侵权与否不便考虑,根据自身情况而定。不公布完整代码的原因也是考虑一部份工作的因素,所以需要保密。下回拿个国内的网站来做分享,也便于我的读者可以一起跟着实践。
网友评论