2013-11-02 58 views
1

我知道使用Python的美麗湯來刮取HTML的基本知識。但是,this soccer statistics頁面會進行AJAX調用以獲取玩家播放的分鐘數據。 (我使用螢火蟲識別網絡通話)。使用Python刮取帶有AJAX的網頁

我的問題:是否有可能使用python來「刮」這些信息?我應該知道哪些工具需要和HTML以外的內容? (我目前正在閱讀JavaScript和AJAX)。

我對這個非特定問題表示歉意,但我甚至不知道如何向Google提供可能存在或不存在的工具。

更新:幾天後,我想出了一個解決方案,使用Python中的SeleniumPhantomJS一起使用。我基本上使用Selenium去每個鏈接,等待頁面加載,然後刮掉信息。 PhantomJS作爲Selenium中的無頭網絡驅動器。

我明白爲什麼mod想要關閉這個,但是人們給我的建議非常有幫助,因爲他們將我推向了正確的方向。我的問題並沒有太多關於什麼工具是最好的,但更多關於我如何在Python中做到這一點。

+1

[Selenium](https://pypi.python.org/pypi/selenium)是另一種選擇。 – thirtydot

+0

我聽說過它提到過。但是Selenium使用Python,下面的海報表示Python不是正確的工具...? – Heisenberg

+1

PhantomJS和Selenium都是很好的選擇,您的問題可以輕鬆解決任何一個問題。 Anurag Uniyal只意味着你應該使用一些利用真實瀏覽器的東西,而不是僅僅解析HTML並且不能執行JavaScript的Beautiful Soup。 – thirtydot

回答

5

使用python是不必要的,並且在許多情況下不會工作,最好的方法是運行適當的瀏覽器並使用javascript來完成所有的抓取操作,因爲它可以訪問整個DOM,甚至可以綁定到事件。

有很多好的無頭瀏覽器支持腳本,我最喜歡的是PhantomJS,您可以用它來加載網頁並將它們刮掉或保存爲圖像。

var page = require('webpage').create(); 
page.open('http://github.com/', function() { 
    page.render('github.png'); 
    phantom.exit(); 
}); 

但隨後有刮框架建立在PhantomJS e.g pjscrape

+0

這正是我需要知道的事情!否則,我會失去無數個小時搜索Python解決方案。你能指點我一些關於你所建議的解決方案的教程/文檔嗎? (即運行一個合適的瀏覽器+使用JavaScript?) – Heisenberg

+1

去通過phantomjs和pjscrape教程,他們很容易,有趣和強大 –

+0

我也發現casperjs,雖然它的主要目的是功能測試原來是一個偉大的刮板它也運行在phantomJS之上,並且很容易開始使用 http://casperjs.org/ –

0

如果你有使用Python抓取的AJAX的信息,也許你可以試試ghost.py項目。 ghost.py是一個使用PyQt webkit的Python中的webkit web客戶端。您可以在執行相關的js代碼後獲取AJAX信息。

無論如何,如果你熟悉js,PhantomJS是一個更好的選擇。 希望我的回答有幫助。