接上次的程序。上次的程序可以做到将一个页面上的图片爬取下来,但是这种网站通常有多页,需要将每页的图片都爬下来。
相关工具及版本:
(1) Selenium 3.141。Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。基本上它可以模拟真实用户的所有操作。
(2) Chrome浏览器驱动 2.45。注意这个驱动要对应自己chrome浏览器的版本,可以去https://sites.google.com/a/chromium.org/chromedriver/(需要over the wall)查找与自己浏览器对应的版本并且下载。安装过程很麻烦🙃🙃🙃。本来是要用phantomjs的,但是最新的selenium已经不支持phantomjs了:Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead。
例子:爬取https://ibaotu.com/ui/15-91803-0-0-0-1.html的ui所有页面的图片。
代码在上一个例子上进行改造,主要改造点在于:
(1) 模拟点击下一页的操作,需要使用Selenium的一个方法来执行js代码。
driver.find_element_by_class_name("next").click()
在这个页面中,下一页的按钮都有一个标签class = “next”,通过找到这个标签,然后点击下一页。
(2) 稍微修改一下逻辑部分
driver = webdriver.Chrome() #指定使用的浏览器,初始化webdrive
注:在这个例子里面,因为每一页的地址都是有规律的,所以不用模拟点击下一页,直接生成地址就可以爬取,但是通过selenium可以完成一些其它的操作,例如模拟下拉加载。