銀行とかから月イチで明細をダウンロードして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
最近ゆうちょ使ってなくて明細にログが無いので未確認だけど、そのうちやる。
0 件のコメント:
コメントを投稿