首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phantom.js能捕获所有AJAX吗?

Phantom.js能捕获所有AJAX吗?
EN

Stack Overflow用户
提问于 2013-02-07 17:25:29
回答 4查看 25.9K关注 0票数 25

我有一个有大量AJAX的主干应用。(每个页面加载会导致5-6个ajax调用),因为我在这些视图中有很多视图和内部视图,

如果我运行Phantom.js,我能得到最终的html结果吗?

最终结果是用户在运行所有ajax调用后看到的结果。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-10 23:27:58

PhamtonJs是一个带有JavaScript接口的无头WebKit。当抓取页面时,PhatomJs将下载所有相关请求,如图像、js、css……它还将执行JS和ajax调用。但是,onLoaded回调是在页面完成加载时调用的,而不是在没有挂起的请求时调用。所以,你必须为此使用一个技巧。

有两种方法可以解决这个问题:

  • 一直等到你的页面(一个元素)中的“某些东西”发生了有效的变化。最好的示例是waitFor.js
  • 等待几秒钟,直到没有收到任何请求。
票数 35
EN

Stack Overflow用户

发布于 2013-02-10 23:07:30

Phantom.js能够在您的页面中运行javascript,因此这应该是可行的。有一个article描述了如何使用Phantom.js为爬虫提供更好的javascript站点版本。

一定要给Phantom.js足够的时间来完成ajax调用,就像这个thread describes一样。

票数 11
EN

Stack Overflow用户

发布于 2015-04-27 02:22:43

您可以结合使用$.active和waitFor.js脚本,该脚本返回到服务器的活动连接的编号,我们需要等待它为0才能完成所有请求。

更多信息:jQuery.active function

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

https://stackoverflow.com/questions/14747643

复制
相关文章

相似问题

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