我想使用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');")