最近GnuCashを使い始めました。
銀行やクレジットカードの利用履歴をネットからCSV等でエクスポートして、
GnuCashにインポートすればあっという間に家計簿がつけられます。

マネーフォワード等の完全自動形式のサービスに比べれば手間はかかっているけど、
セキュリティ面では有利な上、ローカルにデータが残るのでメリットはあると思う。

最近、個人的に楽天Edyとよばれる電子マネーを使う機会が増えているのですが、
その利用履歴はWebサイト上で表示できるだけでダウンロードできませんでした。

そこで利用履歴のCSVを生成するコードをPythonで書きました。

HTMLのパーサーには簡単そうに見えたBeautifulSoupを採用しました。

フロントエンドの事情に疎いので何故かわかりませんが、InputタグのValueにほしいデータがJSONとして格納されていたので、それを引っ張り出します。

soup = BeautifulSoup(html)
d = eval(soup.find(id="his_record")['value'])

この2行でそれをやっています。予想以上に簡単に済みました。

あとはそれを原始的な文字列操作でCSVとして整形します。
この部分はかなり問題が起きそうだけど、問題が起きた時に考えることにします。
今のところ問題なく動いているし。

自動でログインしてHTMLを取得できればよかったけど、楽天のログイン周りがよくわからなかったので潔く諦めました。
HTMLを標準入力で受け付けて、CSVを標準出力に出力するシンプルな仕様です。

現段階では手動でソースをコピーしそれをvimに貼り付けて:!python rakutenedy_csv.py
でCSVにするのがベストっぽいです。

いつか自動ログイン化に取り組みたいです。