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

前言 

  如今不少網站的都大量使用JavaScript,或者使用了Ajax技術。這樣在網頁加載完成後,url雖然不改變可是網頁的DOM元素內容卻能夠動態的變化。若是處理這種網頁是還用requests庫或者python自帶的urllib庫那麼獲得的網頁內容和網頁在瀏覽器中顯示的內容是不一致的。html

解決方案

  使用Selenium+PhantomJS。這兩個組合在一塊兒,能夠運行很是強大的爬蟲,能夠處理cookie,JavaScript,header以及其餘你想作的任何事情。 java

安裝第三方庫

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

  Selenium安裝命令:web

  pip install selenium

安裝PhantomJS

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

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

對windows系統來講,下載PhantomJs 而後將 解壓後的執行文件放在被設置過環境變量的地方,不設置的話,後續代碼就要設, 因此這裏直接放進來方便;瀏覽器

而後檢測下,在cmd窗口輸入phantomjs:cookie

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

對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返回值

相關文章
相關標籤/搜索