web使用python抓取动态内容

我想用 Python来抓取网页上的“你在找这些作者:”框的内容,如下所示: http://academic.research.microsoft.com/Search?query=lander

不幸的是,该框的内容由JavaScript动态加载.通常在这种情况下,我可以阅读Javascript来弄清楚发生了什么,或者我可以使用像Firebug这样的浏览器扩展来确定动态内容的来源.这次没有这样的运气…… Javascript非常复杂,Firebug没有提供很多关于如何获取内容的线索.

有什么技巧可以让这项任务变得简单吗?

解决方法

您可以使用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中通过python运行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');")

相关文章

HTML代码中要想改变字体颜色,常常需要使用CSS样式表。CSS是...
HTML代码如何让字体盖住图片呢?需要使用CSS的position属性及...
HTML代码字体设置 在HTML中,我们可以使用标签来设置网页中的...
在网页设计中,HTML代码的字体和字号选择是非常重要的一个环...
HTML(Hypertext Markup Language,超文本标记语言)是一种用...
外链是指在一个网页中添加一个指向其他网站的链接,用户可以...