前面幾篇文章介紹了selenium、phantomjs的基礎知識及安裝過程,這篇文章是一篇應用。通過selenium調用phantomjs擷取csdn下載下傳資源的資訊,最重要的是動态擷取資源的評論,它是通過javascript動态加載的,故通過phantomjs模拟浏覽器加載擷取。
希望該篇基礎性文章對你有所幫助,如果有錯誤或不足之處,請海涵~
1.首先擷取頁面總數,通過getpage()函數實作;
2.每個頁面有一列資源,通過driver的find_element_by_xpath()路徑擷取标題和get_attribute('href')函數擷取url,它會自動補齊連結;
3.根據步驟2擷取資源的url,去到具體資源擷取消息框和評論資訊;
4.由于采用phantomjs無界面浏覽器加載頁面,故擷取class=info和recom_list的div即可。
運作結果如下圖所示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0kTOzQDOzEDM0IDOwUTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
首先擷取如下圖所示的頁面總數,此時為“8”頁。它通過如下代碼實作:
texts = driver.find_element_by_xpath("//div[@class='page_nav']").text
然後再while(i<=8)依次周遊每頁的資源,每頁資源的url連結為:
http://download.csdn.net/user/eastmount/uploads/8
再擷取每頁所有資源的标題及url,通過代碼如下:
其中對應的源碼如下所示,通過擷取find_elements_by_xpath()擷取多個元素,其div的class='list-container mb-bg',同時路徑為<div><dl><dt><h3><a>即可。同時自動補齊url,如:
<a href='/detail/eastmount/6917799'會添加“http://download.csdn.net/”。
最後在進入具體的資源擷取相應的消息盒infobox和評論資訊,由于通過模拟phantomjs浏覽器直接可以顯示動态js評論資訊。
而如果通過beautifulsoup隻能擷取的html源碼如下,并沒有js資訊。因為它是動态加載的,這就展現了phantomjs的優勢。而通過chrome或firefox浏覽器審查元素能檢視具體的評論div,這也是模拟浏覽器的用處所在吧!
這篇文章主要講述通過selenium和phantomjs擷取csdn下載下傳資源資訊的過程,其中由于driver調用chrome或firefox浏覽器總會有額外空間增加,故調用phantomjs無界面浏覽器完成。同時有幾個問題:
1.如何避免phantomjs的黑框彈出;
2.程式的運作時間比較低,響應時間較慢,如何提高?
接下來如果有機會準備嘗試的内容包括:
1.下載下傳百度百科的旅遊地點infobox(畢設知識圖譜挖掘);
2.如何爬取搜狐圖檔的動态加載圖檔,完成智能爬圖工具;
3.當需要自動登入時driver通路chrome或firefox浏覽器發送消息。
最後希望文章對你有所幫助吧!如果有錯誤或不足之處,還請海涵~