2013-07-12 190 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