ちょっと自動化したい作業があったので、WEBスクレイピングを勉強している。最初はMechanizeを触ってみたのだけど、jsなどの関係でうまく動かない。そんな時、Seleniumを見つけて乗り換えてみた。Seleniumの方がコードも分かりやすく書けるっぽい。

初期環境設定

まずは環境設定。

GUIの無いUbuntuで動かしたいので、まずはブラウザとバーチャルモニターをインストール。

// firefoxをインストール
$ sudo apt-get install -y firefox 

// 必要なライブラリをインストール
$ sudo apt-get update
$ sudo apt-get install ruby-dev
$ sudo apt-get install libffi-dev
$ sudo apt-get install build-essential

// バーチャルモニターをインストール
$ sudo apt-get install xvfb

// バーチャルモニターを起動
$ export DISPLAY=:1
$ Xvfb :1 -screen 0 1024x768x24 &

xvfbの起動の時に&を省略しているのをよく見るけど、自分の環境では必須だった。てか、このままだとフォント関連のエラーが出っぱなしなので、いずれ記事を修正する必要有り。

Ruby+Seleniumを試してみる。

上記の環境設定ができていればSeleniumを動かせるはず。

基本的な動作の記述はQiita等に書いてくださっている方がいます。

参考:RubyでSeleniumを使ってスクレイピング

で、Rubyでブラウザの動作を書いていくのだけど、ブラウザの挙動の書き方のマニュアルを目にしておき、ある程度把握できたら、Selenium BuilderというFirefoxにSelenium用のアドオンがあるので、そちらを使った方が早くて確実。更にテストや修正もしやすいのでオススメ。

これでブラウザの自動化ができるようになった。ループとかの細かい技などがもう少し集まったらまた別にまとめておこう。