2015-07-11 127 views
0

我試圖使用beautifulsoupgamespot的網頁上颳去數據。但是,結果與我從page source viewer得到的結果大不相同。首先,生產了很多errors。舉例來說,我們有美麗的湯汁輸出錯誤

r = requests.get(link) 

soup = bs4.BeautifulSoup(r.text) 

然而soup.title

<title>404: Not Found - GameSpot</title> .

其實我是想湊甚至不出現數據。是否因爲網頁包含javascript?如果是的話,我該如何解決這個問題?

+0

它可能會阻止/重定向你認爲你是一個bot:你可能必須設置你的用戶代理。 –

回答

0

你的連接錯誤是:socket.error:[錯誤54]通過對 連接復位當你第一次連接到http://www.gamespot.com 你必須趕上餅乾,並用它在響應的頭部其他頁面。

1

您只向服務器發送HTTP請求。你需要處理Javascript來獲取內容。

帶有Javascript支持的無頭瀏覽器,如Ghost,它會是一個不錯的選擇。

from ghost import Ghost 

ghost = Ghost() 

ghost.open(link) 
page, resources = ghost.evaluate('document.documentElement.innerHTML;') 
soup = BeautifulSoup(page) 

.evaluate('document.documentElement.innerHTML')將顯示動態生成的內容,而不是你會看到考慮看看源的靜態。

+0

顯然,鬼沒有打開的屬性?我安裝在http://ghostpy.readthedocs.org/en/latest/#examples這裏顯示的依賴關係上,但ghost.open()不可用。 – Aerole

+0

它有。 您需要先安裝pyqt4。你有這裏的二進制文件:http://www.riverbankcomputing.co.uk/software/pyqt/download 然後'pip安裝ghost.py'。不僅'鬼' –