2013年1月13日日曜日

mechanize / watir

銀行とかから月イチで明細をダウンロードしてgnucashに突っ込む
と言う作業をここ3年くらいやっている。
正直面倒くさいので、mechanizeで自動化しようとした。

 とりあえず以下の明細をとりたかった
・イオンカード
・中国銀行VISAカード
・中国銀行
・SMBC
・ゆうちょ

このうち、イオンカードと中銀VISAと中銀はjavascriptを解析して
mechanizeで自動取得できた。
他の(特にゆうちょ)は javascriptバリバリでちょっと無理。

と思ったら、中銀に改造が入ったらしく、javascriptの割合が増えて動かなくなった。

もうmechanize使ってjavascript解析してってのはやってらんないってことで
他のを探してwatirってのを見つけた。
ちょっと前までは要素が無いものに対してexists?を実行すると落ちてたけど、
最近updateしたら直っているようだ。

自動化するためのメモをいくつか書いておく。

・要素の調べ方
右クリックで「要素を調査」を選んだら色々調べられる。


・ofxファイルダウンロード 先の指定
普通に動かすとダウンロードダイアログが出てしまうので起動するブラウザの設定を変える。
profile = Selenium::WebDriver::Firefox::Profile.new
profile["browser.download.useDownloadDir"] = true
profile["browser.download.dir"] = '~/work/mechanize/smbc'
profile["browser.download.folderList"] = 2
profile["browser.helperApps.neverAsk.saveToDisk"] = "application/x-ofx"
driver = Selenium::WebDriver.for :firefox, :profile => profile
b = Watir::Browser.new(driver)

・フレーム
中銀はフレームを使って無いように見えて使ってたりするのでハマった
f = b.frame(:index=>0)
f.link(:href=>/hogehoge/).exists?

・ゆうちょは明細ダウンロードが無い
table要素を配列にできる
hairetu = b.table(:class=>"hogehoge").to_a

最近ゆうちょ使ってなくて明細にログが無いので未確認だけど、そのうちやる。

ubuntu 12.10 byobuのエスケープキー

いままでbyobuのバックエンドをscreenにして使ってた(エスケープキーが変えられなかったから)
設定メモ: screenでマウススクロール

12.10でもUIでエスケープキー変えられないのは相変わらず。
なんでなんだろう。

とりあえずtmuxの設定を直書きする事にした。(Ctrl-gに設定)

 ~/.byobu/keybindings.tmuxに

 set-option -g prefix C-g

を追加

byobuだと分割とかの設定がtmuxとかscreenとかと違うっぽい

よく使う機能

shift-F2 -> 横分割(Ctrl-g "は違うっぽい)

Ctrl-g % -> 縦分割
Ctrl-g Tab -> 分割間の移動
Ctrl-g 1 -> 分割やめる
Ctrl-g n or p -> ウインドウ移動
Ctrl-g d ->デタッチ
Ctrl-g [ ->コピー(スペースで開始→Enterで確定(何か分かりにくい))
Ctrl-g ] -> ペースト
Ctrl-g A ->ウインドウへの命名

まあこんくらいメモっとけば大丈夫だろう。