2013-07-12 188 views
2

我想使用Python刮的內容「是你尋找這些作者:」網頁上的箱子像這樣的:http://academic.research.microsoft.com/Search?query=lander網頁抓取動態內容與Python

不幸的是,盒子的內容通過JavaScript動態加載。通常在這種情況下,我可以通過閱讀Javascript來弄清楚發生了什麼,或者我可以使用像Firebug這樣的瀏覽器擴展來確定動態內容的來源。這次沒有這樣的運氣...... Javascript非常複雜,Firebug沒有提供關於如何獲取內容的許多線索。

有什麼技巧可以讓這個任務變得簡單嗎?

回答

8

您可以使用ghost.py直接與頁面上的JavaScript進行交互,而不是嘗試對其進行反向工程。

如果您在Chrome控制檯中運行以下查詢,您會看到它會返回所需的所有內容。

document.getElementsByClassName('inline-text-org'); 

返回

[<div class=​"inline-text-org" title=​"University of Manchester">​University of Manchester​</div>, 
<div class=​"inline-text-org" title=​"University of California Irvine">​University of California ...​</div>​ 
    etc... 

您可以通過蟒使用ghost.py現實生活中的DOM運行JavaScript。

這是真的很酷:

from ghost import Ghost 
ghost = Ghost() 
page, resources = ghost.open('http://academic.research.microsoft.com/Search?query=lander') 
result, resources = ghost.evaluate(
    "document.getElementsByClassName('inline-text-org');") 
3

以前曾詢問過非常相似的問題here。 引用selenium,最初是一個Web應用程序的測試環境。

我通常使用Chrome的開發者模式,IMHO已經給出了比Firefox更多的細節。

+0

「只是問」?您的鏈接導致2011年的線程。 - 無論如何,歡迎來到SO。感興趣的主題和你的回答,我+1 – eyquem

+1

你是完全正確的,我甚至沒有找到日期...... *慚愧* 感謝您的熱烈歡迎,但! – danstaaar