我有一个有大量AJAX的主干应用。(每个页面加载会导致5-6个ajax调用),因为我在这些视图中有很多视图和内部视图,
如果我运行Phantom.js,我能得到最终的html结果吗?
最终结果是用户在运行所有ajax调用后看到的结果。
发布于 2013-02-10 23:27:58
PhamtonJs是一个带有JavaScript接口的无头WebKit。当抓取页面时,PhatomJs将下载所有相关请求,如图像、js、css……它还将执行JS和ajax调用。但是,onLoaded回调是在页面完成加载时调用的,而不是在没有挂起的请求时调用。所以,你必须为此使用一个技巧。
有两种方法可以解决这个问题:
发布于 2013-02-10 23:07:30
Phantom.js能够在您的页面中运行javascript,因此这应该是可行的。有一个article描述了如何使用Phantom.js为爬虫提供更好的javascript站点版本。
一定要给Phantom.js足够的时间来完成ajax调用,就像这个thread describes一样。
发布于 2015-04-27 02:22:43
您可以结合使用$.active和waitFor.js脚本,该脚本返回到服务器的活动连接的编号,我们需要等待它为0才能完成所有请求。
https://stackoverflow.com/questions/14747643
复制相似问题