首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python对动态内容进行web抓取

使用python对动态内容进行web抓取
EN

Stack Overflow用户
提问于 2013-07-12 14:17:57
回答 3查看 20.4K关注 0票数 6

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

不幸的是,JavaScript会动态加载盒子中的内容。通常在这种情况下,我可以阅读Javascript来弄清楚发生了什么,或者我可以使用Firebug之类的浏览器扩展来弄清楚动态内容来自哪里。幸运的是,这个Firebug Javascript相当复杂,而且time...the没有给出多少关于如何获取内容的线索。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-12 15:26:42

您可以使用ghost.py直接与页面上的JavaScript交互,而不是尝试对其进行反向工程。

如果您在chrome控制台中运行以下查询,您将看到它返回您想要的所有内容。

代码语言:javascript
运行
复制
document.getElementsByClassName('inline-text-org');

返回

代码语言:javascript
运行
复制
[<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。

这真的很酷:

代码语言: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');")
票数 10
EN

Stack Overflow用户

发布于 2013-07-12 14:32:47

早些时候,here也问了一个非常类似的问题。引用的是selenium,最初是web应用程序的测试环境。

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

票数 3
EN

Stack Overflow用户

发布于 2018-06-10 23:12:39

对于抓取动态内容,您不需要一个简单的刮取器,而需要一个功能齐全的headless browser

dhamaniasad/HeadlessBrowsers: A list of (almost) all headless web browsers in existence是我见过的最完整的列表;它列出了每种语言的绑定。

(请注意,列出的项目中有不少被放弃了!)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17608572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档