2010-02-16 (火)
*ruby
とりあえず,書きたいものが書ける程度にはなった.次はrubyらしく書けるようになろう.
やっぱり,do~endとかよりCライクな{~}の方が好きだなぁ.doが無かったりすると,endに対応する語が何なのかrubyを良く知らないと分かりにくい.まぁ,きれいにインデントされていれば問題ない気もしますが.
*みずほダイレクトをスクレイピング
なんとか,ログインまでたどり着いた.ちゃんとログアウトしなかったり,変な操作をすると,10分間ログインできなくなったりするので要注意です.
URLとかフォームとか決め打ちなので,みずほ銀行はもうHTMLを変更したりしないでください.お願いします.
こういう用途には,httpclientよりWWW::Mechanizeの方がよさげだな.
とりあえず,3時間毎にcronで動かして,新しい「キユウヨ」が存在したらtwitterで呟くボットを動かしておく.
これで目的は達成された.
ダウンロード
mizuhodirect.rb
2012-03-17追記: githubに移動しました https://github.com/binzume/mizuhodirect-ruby
サンプル
#!/usr/local/bin/ruby -Ku require "rubygems" require "httpclient" require "kconv" require "hpricot" require "mizuhodirect" account={ "ID" => "1234567890", "PASS" => "AbcDEfg123", "QA" => [ {"q" => "心に残る先生", "a"=>"山田太郎" }, {"q" => "研究室の名前","a"=>"海海研" }, {"q" => "最も好きな都市","a"=>"秋葉原" }, ] } m = MizuhoDirect.new m.login(account) begin account_status = m.get_top puts '残高:' + account_status["zandaka"].to_s account_status["recentlog"].each do |row| p row end ensure m.logout puts "logout" end
ソースの文字コードはUTF-8で.上手くlogoutできないと10分間アカウントがロックされるので要注意.2回目からは合言葉聞かれないようですが,UAとIPに結び付けられているようなので,UserAgent変えたりするとまた聞かれます.質問文は,部分一致するものを.短すぎるとユニークじゃなくなってしまうかも.
レンタルサーバとか他人と共有のマシンで動かさない方が良いです.
*日記のAtomフィード
shimobayashiに言われたので,日記のフィードで全文を取れるようにした.
ちゃんと読めるかどうか確認してない.summaryとcontent両方入れたらFirefoxでサマリの方が表示されたのは,何か記述が間違っていたんだろう.めんどいので全文取得の時はsummaryを削った.使ってるCGIのatom出力がインライン要素しか処理してないので,ソースを張り付けたときとかも酷いことになりそう.