繁体   English   中英

web使用python抓取动态内容

[英]web scraping dynamic content with 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');")

一个非常类似的问题是刚才问这里 引用的是selenium,最初是web-apps的测试环境。

我通常使用Chrome的开发者模式,IMHO已经提供了比Firefox更多的细节。

为了抓取动态内容,你不需要一个简单的刮刀,而是一个成熟的无头浏览器

dhamaniasad / HeadlessBrowsers:现有的(几乎)所有无头网络浏览器列表是我见过的最完整的列表; 它列出了每种语言都有绑定的语言。

(请注意,超过一些列出的项目被放弃!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM