- ウェブスクレイピング
- ヘッドレスブラウザ
の二種類のやり方があるが、対象のページによってウェブスクレイピングで可能か、ヘッドレスブラウザが必要になってくるかは変わってくる
ウェブスクレイピング
HTTP でアクセスして自前で解析・ポストなどを行う。
- Java なら Jsoup か HttpClient がお手軽そう
- Ruby なら Mechanize が鉄板
- PHP なら Simple HTML DOM Parser がお手軽そう
Java: XPath (XMLパースのみ)
Java: Apache Xalan (XMLパースのみ)
Java: Necohtml (HTML解析のみ)
Java: Jsoup
Java: HttpClient
- http://sinsengumi.net/blog/2010/10/java%E3%81%AEhttpclient-4-%E3%82%92%E8%A7%A6%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E3%80%82/
- http://hc.apache.org/httpcomponents-client-ga/tutorial/html/index.html
Ruby: Nokogiri (HTML/XMLパースのみ)
Ruby: Mechanize
PHP: Simple HTML DOM Parser (HTMLパースのみ)
- http://qiita.com/esehara@github/items/db231c99f8076aabdfb2
- http://www.crystal-creation.com/web-appli/technical-information/programming/php/library/simplehtmldom/
ヘッドレスブラウザ
Webkit の画面描画を仮想フレームバッファに出力することで画面描画をせずに動かせるウェブブラウザ。スクレイピングに対する利点は、JavaScriptなどで作られた動的なページに対しても操作ができる。
JavaScript: Phantomjs + Node.js
Phantomjs は JavaScript ベースのヘッドレスブラウザで一番歴史が長い。単体で使うと、Webkit 組み込みの JavaScript エンジンを使った実行となるのでサーバー要素はないため、Node.js とブリッジするライブラリを使って組み合わせるのが、今回の用途に合う
Ruby: Capybara-webkit or Poltergeist
- https://github.com/thoughtbot/capybara-webkit
- https://github.com/willnet/capybara-readme-ja (非公式日本語訳)
- http://takano32.blogspot.jp/2011/12/ruby-capybara.html
- https://github.com/jonleighton/poltergeist
Thoughtbot 社が開発している Ruby ベースのヘッドレスブラウザ。受け入れテストでよく使われるがこれも安定しているといえる。
Capybara-webkit と Poltergeist の二つのヘッドレスドライバがあるが、Poltergeistの方はPhantomjsベースな点やVfbに依存しないなどの点が違うらしい。
PHP: Alpaca-webkit + Capybara-webkit
Capybara-webkit を起動した上で、ソケット通信で無理矢理 PHP のライブラリからブラウザの制御を行うという仕組みのもの。個人が思いつきで作ったものっぽいので安定性などは不明。