6月062015
0
縦長のwebページを画像として保存したかったので久しぶりにcapybara-webkitを使った。
インストール
Macで使うにはqtが必要% brew install qt
% gem install capybara-webkit
% gem list | grep capybara
capybara (2.4.4)
capybara-webkit (1.5.2)
キャプチャ
久しぶりに使ったらインタフェースが変わってたけど、ドキュメントが無いみたいなのでlib/capybara/webkit/driver.rbを読んで適当にやったらキャプチャできた。capybara-capture.rb
require 'capybara-webkit'高さ指定しても縦長でキャプチャできる。
require 'uri'
exit 1 if ARGV.empty?
url = ARGV.shift
driver = Capybara::Webkit::Driver.new 'capture'
driver.visit url
driver.save_screenshot "#{Time.now.to_i}_#{URI.parse(url).host}.png", :width => 1024, :height => 768
なおググるとせっかくDriverがbrowserをラップしているのになぜか直接driver.browserをいじっているコードがたくさん出てくる。
マウスを消したい
画面左上にマウスカーソルが出るのが気になる。消すAPIは用意されてない。driver.execute_scriptでjavascriptが実行できるので、cssも書き換えられる。でもdocument.body.style.cursorや、driver.find(xpath)[0].hoverとか、画面外にdocument.createElementしてそこをhoverさせるとか色々やってみたけど無理だった。
今回はページ内の一部分が欲しかっただけなので、別にいいんだけど
他の手段
PhantomJSだとbody背景が透明になってしまうのでだめ。Chrome拡張のFull Page Screen Captureだとページが長すぎるのか保存できなかった。