Python3.x:Selenium+PhantomJS爬取帶Ajax、Js的網頁及獲取JS返回值


前言 

  現在很多網站的都大量使用JavaScript,或者使用了Ajax技術。這樣在網頁加載完成后,url雖然不改變但是網頁的DOM元素內容卻可以動態的變化。如果處理這種網頁是還用requests庫或者python自帶的urllib庫那么得到的網頁內容和網頁在瀏覽器中顯示的內容是不一致的。

解決方案

  使用Selenium+PhantomJS。這兩個組合在一起,可以運行非常強大的爬蟲,可以處理cookie,JavaScript,header以及其他你想做的任何事情。 

安裝第三方庫

  Selenium是一個強大的網絡數據采集工具,最初是為網站自動化測試開發的,其有對應的Python庫;

  Selenium安裝命令:

  pip install selenium

安裝PhantomJS

  PhantomJS是一個基於webkit內核的無頭瀏覽器,即沒有UI界面,即它就是一個瀏覽器,只是其內的點擊、翻頁等人為相關操作需要程序設計實現。通過編寫js程序可以直接與webkit內核交互,在此之上可以結合java語言等,通過java調用js等相關操作。需要去官網下載對應平台的壓縮文件;

PhantomJS(phantomjs-2.1.1-windows)下載地址:http://phantomjs.org/download.html,按照不同的系統選擇相應的版本

對windows系統來說,下載PhantomJs 然后將 解壓后的執行文件放在被設置過環境變量的地方,不設置的話,后續代碼就要設, 所以這里直接放進來方便;

然后檢測下,在cmd窗口輸入phantomjs:

出現這樣的畫面,即表示成功;

對Mac系統來說,下載后保存到一個路徑中,可以直接保存在環境變了路徑中,也可以在環境變量路徑中創建一個指向phantomjs的軟連接

ln -s /usr/local/opt/my/phantomjs-2.1.1-macosx/bin/phantomjs  /usr/local/bin

測試代碼:

from selenium import webdriver driver = webdriver.PhantomJS() driver.get('http://www.baidu.com/') print (driver.page_source)

能成功獲取到頁面元素即為安裝成功

 

示例一:

  Selenium+PhantomJS示例代碼:

from selenium import webdriver driver = webdriver.PhantomJS() driver.get('http://www.cnblogs.com/feng0815/p/8735491.html') #獲取網頁源碼
data = driver.page_source print(data) #獲取元素的html源碼
tableData = driver.find_elements_by_tag_name('tableData').get_attribute('innerHTML') #獲取元素的id值
tableI = driver.find_elements_by_tag_name('tableData').get_attribute('id') #獲取元素的文本內容
tableI = driver.find_elements_by_tag_name('tableData').text driver.quit()

  能輸出網頁源碼,說明安裝成功

獲取JS返回值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM