抓取 AngularJS 应用程序



我正在使用Nokogiri使用Rails废弃一些HTML页面。

当我尝试废弃 AngularJS 页面时,我遇到了一些问题,因为 gem 在完全渲染之前打开了 HTML。

有没有办法废弃这种类型的页面?如何在抓取页面之前完全呈现页面?

如果你试图以一种完全通用的方式抓取AngularJS页面,那么你可能需要类似@tadman评论中提到的(PhantomJS)——某种类型的无头浏览器,可以完全处理AngularJS JavaScript,并在之后打开DOM进行检查。

如果你有一个特定的站点或你想要抓取的网站,阻力最小的路径可能会完全避开AngularJS前端,直接查询Angular代码从中提取内容的API。许多/大多数 AngularJS 站点的标准场景是它们拉下静态 JS 和 HTML 代码/模板,然后它们对服务器(他们自己的或某些第三方 API)进行 ajax 调用以获取将要呈现的内容。如果你看一下他们的代码,你可能会直接查询任何ang正在调用的东西(即通过$http,ngResource或restangular)。返回数据通常是 JSON,与在渲染后的 html 结果中进行真正的抓取相比,收集起来要容易得多。

您可以使用:

require 'phantomjs'
require 'watir'
b = Watir::Browser.new(:phantomjs)
b.goto URL
doc = Nokogiri::HTML(b.html)

下载 http://phantomjs.org/download.html 中的 phantomjs 并移动/usr/bin 的二进制文件

相关内容

  • 没有找到相关文章

最新更新