mechanizeにハマっている。こんな便利なものを知らなかったとは...
という訳で、WAONも自動化してみた。ちなみにOCN家計簿でのWAON開始より早くできたよ。しかもあちらは月10件までしか取得しないっぽいので、こちらのほうがより完全に履歴を取得できるとな。
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'rubygems'
require 'nokogiri'
require 'openssl'
$stderr = File.open("./err.log", "w")
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
require 'mechanize'

module Waon
  def Waon.get(id,pass)
agent = Mechanize.new
    agent.user_agent_alias = 'Windows IE 7'
page = agent.get('https://www.waon.com/wmUseHistoryInq/init.do')
    login_form = page.forms_with(:name => 'loginForm').first
    4.times{|i|
login_form.fields_with(:name => /cardNo#{i+1}/).first.value = id.slice( i*4, 4)
     }
    login_form.fields_with(:name => 'secNo').first.value = pass
page = login_form.click_button
    tmp = []
6.times{|i|
page = page.link_with(:href => /beforeMonth=#{i}/).click
tmp  =  tmp + Waon.table(page)
 while link = page.link_with(:text => /\A次の10件/) do
    page = link.click
   tmp = tmp + Waon.table(page)
 end
}
return tmp
 end
  def Waon.table(pg)
return pg.body.toutf8.split(/<tr>/).delete_if{|tr|
      !(tr =~ /円/m)
    }.map{|tr|
      tr.gsub(/\n/,"").split(/#{"</td>"}/)[0..4].map{|line| # 取引年月日,利用店舗,利用金額(税込),利用区分,チャージ区分
        Nokogiri(line).inner_text.chomp.strip.gsub("円","")
      }
    }
  end
end
 あと、suicaもwaonも既にofx変換までできているのだけど、もう少しコードを見なおしてから記録。ofxに関する日本語資料は今はここにあるようだ。