天天看點

[Python爬蟲] Selenium+Phantomjs動态擷取CSDN下載下傳資源資訊和評論

        前面幾篇文章介紹了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即可。

        運作結果如下圖所示:

[Python爬蟲] Selenium+Phantomjs動态擷取CSDN下載下傳資源資訊和評論
[Python爬蟲] Selenium+Phantomjs動态擷取CSDN下載下傳資源資訊和評論

        首先擷取如下圖所示的頁面總數,此時為“8”頁。它通過如下代碼實作:

        texts = driver.find_element_by_xpath("//div[@class='page_nav']").text

        然後再while(i<=8)依次周遊每頁的資源,每頁資源的url連結為:

        http://download.csdn.net/user/eastmount/uploads/8

[Python爬蟲] Selenium+Phantomjs動态擷取CSDN下載下傳資源資訊和評論

        再擷取每頁所有資源的标題及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/”。

[Python爬蟲] Selenium+Phantomjs動态擷取CSDN下載下傳資源資訊和評論

        最後在進入具體的資源擷取相應的消息盒infobox和評論資訊,由于通過模拟phantomjs浏覽器直接可以顯示動态js評論資訊。

[Python爬蟲] Selenium+Phantomjs動态擷取CSDN下載下傳資源資訊和評論
[Python爬蟲] Selenium+Phantomjs動态擷取CSDN下載下傳資源資訊和評論

        而如果通過beautifulsoup隻能擷取的html源碼如下,并沒有js資訊。因為它是動态加載的,這就展現了phantomjs的優勢。而通過chrome或firefox浏覽器審查元素能檢視具體的評論div,這也是模拟浏覽器的用處所在吧!

        這篇文章主要講述通過selenium和phantomjs擷取csdn下載下傳資源資訊的過程,其中由于driver調用chrome或firefox浏覽器總會有額外空間增加,故調用phantomjs無界面浏覽器完成。同時有幾個問題:

            1.如何避免phantomjs的黑框彈出;

            2.程式的運作時間比較低,響應時間較慢,如何提高?

        接下來如果有機會準備嘗試的内容包括:

            1.下載下傳百度百科的旅遊地點infobox(畢設知識圖譜挖掘);

            2.如何爬取搜狐圖檔的動态加載圖檔,完成智能爬圖工具;

            3.當需要自動登入時driver通路chrome或firefox浏覽器發送消息。

        最後希望文章對你有所幫助吧!如果有錯誤或不足之處,還請海涵~

繼續閱讀