セゾンカードのWeb明細をダウンロードする

セゾンカードNetアンサーのWeb明細は過去3ヶ月分しかダウンロード出来ないので定期的にダウンロードしておかないと過去の明細が見れなくなってしまう。
毎回手動でログインしてダウンロードするのが面倒くさかったので、rubyのMechanizeを使って、過去3ヶ月分のCSVとPDFをダウンロードするスクリプトを書いた。

require 'mechanize'

class SaisonClient

  def initialize
    @agent = Mechanize.new
  end

  def login
    @agent.get('https://netanswerplus.saisoncard.co.jp/WebPc/welcomeSCR.do')
    f = @agent.page.forms[0]
    f.inputId = 'NetアンサーID'
    f.inputPassword = 'パスワード'
    f.submit
  end
  
  def top
    @agent.get('https://netanswerplus.saisoncard.co.jp/WebPc/NATOP.do')
  end
  
  def move(link)
    @agent.page.link_with(:href=>link).click
  end
  
  def meisai
    move(/USC0101BLC01/)
  end
  
  def this_month
    top()
    meisai()
    download()
  end
  
  def one_month_ago
    top()
    meisai()
    move(/fixTargetMonth=1/)
    download()
  end
  
  def two_month_ago
    top()
    meisai()
    move(/fixTargetMonth=2/)
    download()
  end
  
  def download
    csv_link = @agent.page.link_with(:href=>/USC0105BLP01/)
    pdf_link = @agent.page.link_with(:href=>/USC0104BLP01/)
    save(csv_link)
    save(pdf_link)
  end
  
  def save(link)
    link.click
    @agent.page.save
    puts @agent.page.filename + " saved."
  end
  
  def logout
    top()
    move(/USL0100BLC01/)
    puts "logout."
  end

end


client = SaisonClient.new

# ログイン
client.login()

# 今月分ダウンロード
client.this_month()

# 先月分ダウンロード
client.one_month_ago()

# 先々月分ダウンロード
client.two_month_ago()

# ログアウト
client.logout()