一:前言

嘀嘀嘀,上车请刷卡。昨天看到了不错的图片分享网—— 花瓣 ,里面的图片质量还不错,所以利用selenium+xpath我把它的妹子的栏目下爬取了下来,以图片栏目名称给文件夹命名分类保存到电脑中。这个妹子主页 huaban.com/boards/favor 是动态加载的,如果想获取更多内容可以模拟下拉,这样就可以更多的图片资源。这种之前爬虫中也做过,但是因为网速不够快所以我就抓了19个栏目,一共500多张美图,也已经很满意了。

先看看效果:


v2-780b430c0b82058414876d22faeaab8a_hd.jpg


Paste_Image.png


v2-23c853f1e72c63eb9c524865245a86b1_hd.jpg


Paste_Image.png

二:运行环境

  • IDE:Pycharm

  • Python3.6

  • lxml 3.7.2

  • Selenium 3.4.0

  • requests 2.12.4

三:实例分析

1.这次爬虫我开始做的思路是:进入这个网页 huaban.com/boards/favor 然后来获取所有的图片栏目对应网址,然后进入每一个网页中去获取全部图片。(如下图所示)


v2-e22980b0b3ad6050aa0367af3df41ad6_hd.jpg


Paste_Image.png


v2-e1d17bba00c0069294480a78390476c9_hd.jpg


Paste_Image.png

2.但是爬取获取的图片分辨率是236x354,图片质量不够高,但是那个时候已经是晚上1点30之后了,所以第二天做了另一个版本:在这个基础上再进入每个缩略图对应的网页,再抓取像下面这样高清的图片。


v2-1d3d8a2c543f38ab8d34f332a305d0d8_hd.jpg


Paste_Image.png

四:实战代码

1.第一步导入本次爬虫需要的模块


v2-6b468c551e39ad994a9f97a53e316be3_hd.jpg


2.下面是设置webdriver的种类,就是使用什么浏览器进行模拟,可以使用火狐来看它模拟的过程,也可以是无头浏览器PhantomJS来快速获取资源,['--load-images=false', '--disk-cache=true']这个意思是模拟浏览的时候不加载图片和缓存,这样运行速度会加快一些。WebDriverWait标明最大等待浏览器加载为10秒,set_window_size可以设置一下模拟浏览网页的大小。有些网站如果大小不到位,那么一些资源就不加载出来。


v2-ed89ed5d8ef1566ccb13e8737b474cd7_hd.jpg


3.parser(url, param)这个函数用来解析网页,后面有几次都用用到这些代码,所以直接写一个函数会让代码看起来更整洁有序。函数有两个参数:一个是网址,另一个是显性等待代表的部分,这个可以是网页中的某些板块,按钮,图片等等...


v2-16268fb93e860ead5e1e3171a1afe675_hd.jpg


4.下面的代码就是解析本次主页面 huaban.com/boards/favor 然后获取到每个栏目的网址和栏目的名称,使用xpath来获取栏目的网页时,进入网页开发者模式后,如图所示进行操作。之后需要用栏目名称在电脑中建立文件夹,所以在这个网页中要获取到栏目的名称,这里遇到一个问题,一些名称不符合文件命名规则要剔除,我这里就是一个 * 影响了。


v2-a3f018e448921894c24d9f34d08ee1b4_hd.jpg



v2-a983d1fe31ca5b8a2050501ab8a97ae0_hd.jpg


Paste_Image.png

5.前面已经获取到栏目的网页和栏目的名称,这里就需要对栏目的网页分析,进入栏目网页后,只是一些缩略图,我们不想要这些低分辨率的图片,所以要再进入每个缩略图中,解析网页获取到真正的高清图片网址。这里也有一个地方比较坑人,就是一个栏目中,不同的图片存放dom格式不一样,所以我这样做


v2-78bbda41d7d957ed0f08830ac5327d0d_hd.jpg


这就把两种dom格式中的图片地址都获取了,然后把两个地址list合并一下。 img_url +=img_url2 
在本地创建文件夹使用 filename = 'image\{}\'.format(fileName) + str(i) + '.jpg' 表示文件保存在与这个爬虫代码同级目录image下,然后获取的图片保存在image中按照之前获取的栏目名称的文件夹中。


v2-943ab0b93df195599dba975f6089a263_hd.jpg


五:总结

这次爬虫继续练习了Selenium和xpath的使用,在网页分析的时候也遇到很多问题,只有不断练习才能把自己不会部分减少,当然这次爬取了500多张妹纸还是挺养眼的。

作者:静熙
来源: cnblogs.com/jiaoyu121/p