2014-03-28 137 views
4

所以我使用python和beautifulsoup4(我沒有綁定)來刮一個網站。問題是當我使用urlib抓取頁面的html時,它不是整個頁面,因爲它的一部分是通過javascript生成的。有什麼辦法可以解決這個問題嗎?Web動態javascript內容抓取網站

+0

[嘗試過的Python BeautifulSoup和Phantom JS:STILL無法抓取網站](http://stackoverflow.com/questions/22028775/tried-python-beautifulsoup-and-phantom-js-still-cant-刮網站) –

回答

8

基本上有繼續進行兩個主要選項:

  • 使用瀏覽器的開發者工具,看看Ajax請求要加載網頁和你的腳本模擬它們,你可能會需要使用json模塊將響應json字符串加載到python數據結構中
  • 使用像selenium這樣的工具可以打開真正的瀏覽器。該瀏覽器也可以是「無頭」,見Headless Selenium Testing with Python and PhantomJS

第一個選項是更難以實施和它的,一般來講,更脆弱,但它並不需要真正的瀏覽器,並可以更快。

第二種選擇是更好的方面,你得到什麼其他真正的用戶得到什麼,你不會擔心如何加載頁面。 Selenium在頁面上的locating elements功能非常強大 - 根本不需要BeautifulSoup。但是,無論如何,這個選項比第一個慢。

希望有所幫助。