ruby - 使用 Capybara 或类似工具访问所有加载的资源

标签 ruby web-crawler headless-browser

我正在寻找一种可能性,以便使用 headless 浏览器轻松访问和列出网页文档开始加载后加载的所有资源:脚本、图像、样式表等。我对文件的 url、状态代码和类型等感兴趣。

想办法以编程方式访问 Network 选项卡(开发人员工具)为您提供的信息:

enter image description here

有没有人知道 Ruby 库可以帮助我解决这个问题,或者——甚至更好——是否有办法使用 Capybara(–webkit) 来实现这个目标?


更新

似乎Poltergeist has a method called network_traffic这就是我所追求的。不过,还没有时间研究它。我会在完成后报告。

最佳答案

如更新中所述,似乎有一种方法可以使用 Poltergeist( capybara 驱动程序)执行此操作。这是一个快速且非常“hackish”的实验:

require 'rubygems'
require 'capybara'
require 'capybara/poltergeist'

driver = Capybara::Poltergeist::Driver.new({})
port   = Capybara::Poltergeist::Util.find_available_port
server = Capybara::Poltergeist::Server.new(port, 30)
client = Capybara::Poltergeist::Client.start(port,
  :path              => driver.options[:phantomjs],
  :window_size       => driver.options[:window_size],
  :phantomjs_options => driver.phantomjs_options
)

browser = Capybara::Poltergeist::Browser.new(server, client, nil)
browser.visit('http://www.google.com/')

browser.network_traffic.each do |request|
  # sorry, quick and dirty to see what we get:
  request.response_parts.uniq(&:url).each do |response|
    puts "#{response.url}: #{response.status}"
  end
end

=> 

http://www.google.com/: 200
http://ssl.gstatic.com/gb/images/b_8d5afc09.png: 200
http://www.google.com/images/srpr/logo1w.png: 200
http://www.google.com/images/srpr/nav_logo80.png: 200
http://www.google.com/xjs/_/js/hp/sb_he,pcc/rt=j/ver=FaiMBboaDLc.en_US./d=1/sv=1/rs=AItRSTMKxoHomLOW7ITf6OnfIEr5jQCEtA: 200

然而,这非常慢,当然远非可用。我计划更深入地研究 Poltergeist,也许在较低的层次上做同样的事情。

关于ruby - 使用 Capybara 或类似工具访问所有加载的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12615646/

相关文章:

ruby-on-rails - 使用夹具数据填充生产服务器

ruby-on-rails - 用于 ruby​​ 1.9 和 rails 的 soap 客户端

javascript - JSON.stringify 根据两个不同的页面上下文表现不同

selenium - headless 浏览器检测

r - 使用 RStudio Chromote 获取页面生成的 XHR 请求的响应正文的正确方法

ruby-on-rails - 如何用管道分隔打印哈希值

ruby-on-rails - Model.sum 在使用 :include (rails 2. 3.8 时返回不准确的和

python-2.7 - 如何使用带有URL和基本身份验证凭据的scrapy shell?

apache - Solr 索引从 1.4.1 升级到 5.2.1

python - 如何在scrapy中根据url过滤重复请求