接上次的程序。上次的程序可以做到將一個(gè)頁(yè)面上的圖片爬取下來(lái),但是這種網(wǎng)站通常有多頁(yè),需要將每頁(yè)的圖片都爬下來(lái)。
相關(guān)工具及版本:
(1)??Selenium 3.141。Selenium [1]?是一個(gè)用于Web應(yīng)用程序測(cè)試的工具。Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣?;旧纤梢阅M真實(shí)用戶的所有操作。
(2)??Chrome瀏覽器驅(qū)動(dòng)?2.45。注意這個(gè)驅(qū)動(dòng)要對(duì)應(yīng)自己chrome瀏覽器的版本,可以去https://sites.google.com/a/chromium.org/chromedriver/(需要over the wall)查找與自己瀏覽器對(duì)應(yīng)的版本并且下載。安裝過(guò)程很麻煩??????。本來(lái)是要用phantomjs的,但是最新的selenium已經(jīng)不支持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所有頁(yè)面的圖片。
?代碼在上一個(gè)例子上進(jìn)行改造,主要改造點(diǎn)在于:
(1)????模擬點(diǎn)擊下一頁(yè)的操作,需要使用Selenium的一個(gè)方法來(lái)執(zhí)行js代碼。
driver.find_element_by_class_name("next").click()
在這個(gè)頁(yè)面中,下一頁(yè)的按鈕都有一個(gè)標(biāo)簽class = “next”,通過(guò)找到這個(gè)標(biāo)簽,然后點(diǎn)擊下一頁(yè)。
(2)????稍微修改一下邏輯部分
driver = webdriver.Chrome()?#指定使用的瀏覽器,初始化webdrive


注:在這個(gè)例子里面,因?yàn)槊恳豁?yè)的地址都是有規(guī)律的,所以不用模擬點(diǎn)擊下一頁(yè),直接生成地址就可以爬取,但是通過(guò)selenium可以完成一些其它的操作,例如模擬下拉加載。