Javascript Phantom.js是否捕获所有AJAX?

Javascript Phantom.js是否捕获所有AJAX?,javascript,backbone.js,phantomjs,Javascript,Backbone.js,Phantomjs,我有一个主干应用程序,其中包含大量AJAX。(每个页面加载导致5-6个ajax调用)因为我在这些视图中有许多视图和内部视图 如果我运行Phantom.js,我可以得到最终的html结果吗 最后的结果是用户在所有ajax调用运行后看到的结果。Phantom.js能够在您的页面中运行javascript,所以这应该是可行的。有一篇文章描述了如何使用Phantom.js为爬虫程序提供javascript站点的好版本 一定要给Phantom.js足够的时间来完成ajax调用,因为PhamtonJs是一个

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

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


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

Phantom.js能够在您的页面中运行javascript,所以这应该是可行的。有一篇文章描述了如何使用Phantom.js为爬虫程序提供javascript站点的好版本


一定要给Phantom.js足够的时间来完成ajax调用,因为PhamtonJs是一个带有JavaScript API的无头WebKit。在抓取页面时,PhatomJs将下载所有从属请求,如图像、js、css。。。它还将执行JS和ajax调用。 但是,当页面完成加载时,而不是当没有挂起的请求时,会调用onload回调。所以,你必须使用一个技巧

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

  • 等待页面(元素)中的“某物”有效更改。最好的例子是
  • 等待几秒钟,直到没有收到任何请求

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


更多信息:

如果您可以访问网站的javascript代码,除了
waitFor()
方式之外,我认为您可以使ajax请求同步。它有时更简单、更准确

为什么不自己试试呢?你说的“最终HTML”是什么意思?你的意思是像
document.body.innerHTML
这样的东西吗?我真的不知道node.js的用法。但是waitFor.js是一个基本的例子,说明了您必须做什么。我相信在你的情况下你会很容易地使用它。这里有一个死链接。你不应该链接到像这样的东西,死链接的webarchive: