使用python抓取js動態加載的網頁

我們在做網頁抓取的時候,一般來說使用urllib和urllib2就能滿足大部分需求。

但是有時候我們遇見那種使用js動態加載的網頁。就會發現urllib只能抓出一個部分內容空白的網頁。就像下面百度圖片的結果頁:





審查元素之後,。發現百度圖片中,顯示圖片的div爲:pullimages



這個div裏面的內容是動態加載的。而使用urllib&urllib2是抓取不到的。

要抓取動態加載的元素,首先考慮使用selenium來調用瀏覽器進行抓取。

而我們運行的環境是linux,最理想的方法是在無界面情況下進行抓取。

所以使用selenium+phantomjs來進行無界面抓取

phantomjs是什麼呢?它是一個基於webkit內核的無頭瀏覽器,即沒有UI界面,即它就是一個瀏覽器


selenium和phantomjs的安裝配置可以google,這裏就略過不談了

代碼如下:

from selenium import webdriver
driver = webdriver.PhantomJS(executable_path='/bin/phantomjs/bin/phantomjs')#如果不方便配置環境變量。就使用phantomjs的絕對路徑也可以

driver.get('http://image.baidu.com/i?ie=utf-8&word=%E5%91%A8%E6%9D%B0%E4%BC%A6')#抓取了百度圖片,query:周杰倫

driver.page_source #這就是返回的頁面內容了,與urllib2.urlopen().read()的效果是類似的,但比urllib2強在能抓取到動態渲染後的內容。

driver.quit()


到這裏。就抓取動態頁面成功了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章