上一篇博文《selenium+python 爬取网络图片(1) -- soso、谷歌、好搜》介绍了如何用selenium+python在诸如soso、谷歌、好搜等搜索引擎上爬取图片的方法,但是却没用提到百度,因为百度的情况比较特殊。首先,百度图片的数据更好,因为每幅图片都有“data-desc”描述可以作为图像很好的语义标签,此外基于百度较强的技术其查询搜索得到的图片相关性较高,后续人工筛选工作较少;其次,百度图片的数据不容易爬取,如果像前一篇文章中的方法取img标签的src值作为下载url,是下载不到图片的,得到的知识167B的非图像数据。
那么,如何爬取百度图片呢,笔者尝试了两种方法。第一种方法尚未完整实现,但思路已完整,第二种方法可以较为简单的爬到百度图片数据源。下面依次介绍两种实现方案。
方案1:
使用selenium模拟鼠标操作--“将鼠标放置图像上方,右键并选择图像另存为选项”,然后就可以保存了,代码如下:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
# init
url = 'http://image.baidu.com/i?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=