mechanize 2013/09/09
ウェブサイトのスクレイピングを楽にするライブラリ。同じ名前のライブラリがPerlやRuby、Pythonにもあるらしい。
Ruby
参考サイト 2013/06/03
Mechanize 公式サイト
http://mechanize.rubyforge.org/
Mechanize Github
https://github.com/sparklemotion/mechanize
RubyのMechanizeを解説 for 1.0.0 | きたももんががきたん。
http://d.hatena.ne.jp/kitamomonga/20081209/kaisetsu_for_ver_0_9_ruby_www_mechanize
Nokogiri
http://nokogiri.org/
Mechanizeが利用しているHTMLを解析するライブラリ
Nokogiriをインストールするにはgem以外のパッケージも必要 2013/06/17
自分の環境では gem install
する前に apt-get でいくつかのパッケージをインストールすることが必要だった。
sudo apt-get install libxslt-dev libxml2-dev libruby1.9.1
sudo gem install nokogiri
# nokogiriの最新バージョン 1.6.0 では Ruby 1.9.2 以上が必要
# Ruby 1.9.1 の場合は nokogiri のバージョンの指定が必要
sudo gem install -v 1.5.9 nokogiri
詳しくは以下の公式ドキュメントを参照。
http://nokogiri.org/tutorials/installing_nokogiri.html
(Ubuntu 12.04 で確認。2013/06/17)
コードの例 2013/04/15
require 'mechanize'
agent = Mechanize.new
agent.user_agent = 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31' # User-Agentを設定
p agent.get('http://www.yahoo.co.jp/')
p agent.page.uri.to_s # 現在のURLwを取得
p agent.page.title # titleを取得
p agent.page.body # HTMLを取得
p agent.page.search('div#topicsfb li') # CSSセレクタでマッチする要素の配列を取得
p agent.page.at('div#topicsfb li') # CSSセレクタでマッチする最初の要素を取得
link = agent.page.link_with(:text => 'ヘルプ'.toutf8) # リンクを探す
link.click if link != nil リンクをクリック
フォームに関するコードの例 2013/05/18
form = agent.page.forms[0] # フォームを取得
# または
form = agent.page.form_with(:id => 'login_form') # フォームをidで取得
form = agent.page.form_with(:action => '/service') # フォームをactionで取得
form['login'] = email # input要素に値を設定
form['password'] = pw # input要素に値を設定
form.click_button # submitを実行
BASIC認証のあるページにアクセスするには 2013/06/17
リクエストする前にid, pwをauthメソッドに渡す。
例:
agent.auth('user_hoge', 'passwd')
user_agent_alias で使えるエイリアス 2013/06/20
サーバへのリクエスト時に送信される User-Agent をmechanizeデフォルトのものから以下のようなコードで変更できる。
agent.user_agent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'
長い User-Agent を指定するのが面倒なのでエイリアスでも指定できる。以下のようにすると、上記と同じ効果が得られる。
agent.user_agent_alias = 'Windows IE 9'
エイリアスのリストは以下で定義されている。
mechanize 2.7.1 では以下のとおり。
- Mechanize
- Linux Firefox
- Linux Konqueror
- Linux Mozilla
- Mac Firefox
- Mac Mozilla
- Mac Safari 4
- Mac Safari
- Windows IE 6
- Windows IE 7
- Windows IE 8
- Windows IE 9
- Windows Mozilla
- iPhone
- iPad
- Android