Phantom.js捕获所有AJAX吗?

TIM*_*MEX 25 javascript backbone.js phantomjs

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

如果我运行Phantom.js,我可以获得最终的HTML结果吗?

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

Cyb*_*axs 35

PhamtonJs是一个带有JavaScript API的无头WebKit.在抓取页面时,PhatomJs将下载所有依赖请求,例如images,js,css ......它还将执行JS和ajax调用.但是,在页面完成加载时调用onLoaded回调,而不是在没有挂起请求时调用.所以,你必须使用一个技巧.

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

  • 等到你的页面(元素)中有效地改变了"某事".最好的例子是waitFor.js
  • 等待几秒钟,直到没有收到任何请求.

  • 是否有waitFor.js的node.js模块?我在node.js中使用phamtom.js ... (3认同)

sbr*_*ges 11

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

一定要给Phantom.js足够的时间来完成ajax调用,就像这个线程所描述的那样.