JavaScriptが必要なページのスクレイピング
JavaScriptが必要なページをスクレイピングするにはどうしたらいいか調べた。
Selenium
ブラウザを操作してウェブアプリのテストをするツール。
FireFox, Chrome, IEなど様々なブラウザに対応している。
実際にブラウザを立ちあげて色々行うのでやや遅い。
Rubyで書くとこうなる。
require "rubygems" require "selenium-webdriver" d = Selenium::WebDriver.for :firefox d.navigate.to 'http://example.com' puts d.page_source
メソッド名がJavaScriptライク。
GUIのない環境で動かすときはXvfbをインストールし、headlessを使う。
require "rubygems" require "selenium-webdriver" require "headless" Headless.ly do d = Selenium::WebDriver.for :firefox d.navigate.to 'http://example.com' puts d.page_source end
似たところでWatirがある。
capybara-webkit
Webkitエンジンを使用してウェブアプリのテストをするツール。
ブラウザの立ちあげが必要ないぶん早い。
Qtに依存しているためインストールがやや面倒。
Rubyで書くとこうなる。
require 'rubygems' require 'capybara' require 'capybara/dsl' require 'capybara-webkit' class Driver Capybara.default_driver = :webkit include Capybara::DSL end d = Driver.new d.visit "http://example.com" puts d.html
ちなみにCapybaraはSeleniumを標準でサポートしている。
Capybara.default_driver = :selenium # これで切り替え
GUIのない環境で動かすときはXvfb + headlessを使う。
ameblogazo
アメブロの画像を簡単にぶっこ抜くツール
以前の記事でつくったツールが動かなくなっていたので、ちょっと直した。
capybara-webkitを使ってる。