山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

Mechanizeの使い方

Mechanizeの使い方は実に簡単です。

インターフェースがわかりやすいので

サイト上のサンプルを見ればそれだけで

だいたいわかってしまいます。

先日作った銀行のサイトから入出金明細を

ダウンロードするプログラムを見てみましょう。

require 'rubygems'
require 'mechanize'

まずはrequireします。

agent = Mechanize.new

Mechanizeのインスタンスを生成します。

page = agent.get('https://entry11.bk.mufg.jp/ibg/dfw/APLIN/loginib/login?_TRANID=AA000_001')

生成したインスタンスでgetメソッドを実行すると、

普通にページを取得します。

form = page.form('MainForm')

ページ内のフォームを取得します。

DOMのid属性がMainFormになっている

ものが取得されます。

form.KEIYAKU_NO = '99999999'
form.PASSWORD = 'xxxxxxxx'
form._TRANID = 'AA011_001'
form._TARGET = 'MUFGpop_syokai'

フォーム内の要素をセットします。

page = agent.submit(form)

フォームをサブミットします。

サブミットした結果のレスポンスの

ページがまた取得できます。

これでログイン後のページが取得でき、

そのままのセッションで同じ要領で

どんどんページを操作することができます。

リンクをクリックすることもできます。

page = agent.page.link_with(:text => 'News').click

CSVをダウンロードする部分は、普通に

submitして帰ってきたページをファイルに

書き込むようにしたらできました。

File.write(day.strftime("bank%Y-%m-%d.csv"), page.body)

簡単ですね。

Mechanize自体は非常に簡単ですが他の

部分でいろいろ苦労したところを次回

紹介したいと思います。


※2014/6/4追記

ダウンロードファイルの保存方法に問題が

ありました。

改行コードが変換されるのでバイナリデータは

壊れてしまいます。

よりよいやり方はこちらを参照ください。

Mechanize Tips