刮刮AngularJS应用程序
我正在使用Nokogiri在Rails中删除一些HTML页面。
当我试图废弃AngularJS页面时遇到了一些问题,因为gem在完全呈现之前打开了HTML。
有没有办法废弃这种类型的页面? 如何在抓取页面之前完全呈现页面?
如果你试图以完全通用的方式抓取AngularJS页面,那么你可能需要像@tadman在评论中提到的那样(PhantomJS) – 某种类型的无头浏览器完全处理AngularJS JavaScript并打开之后的DOM直到检查。
如果您有一个或多个特定的站点,那么阻力最小的路径可能会完全避免AngularJS前端,并直接查询Angular代码从中提取内容的API。 许多/大多数AngularJS站点的标准方案是,他们下拉静态JS和HTML代码/模板,然后他们将ajax调用回服务器(他们自己或某些第三方API)以获取将要的内容渲染。 如果你看看他们的代码,你可以直接查询任何角度调用(即通过$ 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的二进制文件
- Rails 3 + angularjs + minification在生产中不起作用:未知提供者:eProvider
- 错误:未知提供者:aProvider < – a
- AngularJS和Rails路由错误
- Rails API + AngularJS + Websocket-Rails gem
- 如何在不使用Asset Pipeline的情况下在Rails 5中提供静态图像?
- 确保用户使用cookieStore和AngularJS登录或注销的最佳实践
- 请求的资源上不存在“Access-Control-Allow-Origin”标头
- Angular Rails模板无法正常工作
- 这对于sinatra + angular.js +自定义提供程序的Oauth2工作流的概念是否正确?