Yahooファイナンスの株価時系列をタブ区切りテキストにして、Excelで開きやすくするスクリプト。
下記例は、日経225(998407.O)を2001年1月から2012年12月まで。
ページをめくりながらなので、日付逆順になってしまう。いったん全部をArrayに入れてsortしようかと思ったけど、Excelでソートすればいいのでそのまま。
#!/usr/local/bin/ruby # coding: utf-8 require "mechanize" URL = "http://info.finance.yahoo.co.jp/history/?code=998407.O&sy=2001&sm=1&sd=2&ey=2012&em=12&ed=31&tm=d" agent = Mechanize.new page = agent.get(URL) loop do puts page.root.xpath("//table[contains(@class,'boardFin')]/tr[position()>1]").map{|tr| tr.xpath("td").map{|td| td.text}.join("\t")} nxt = page.root.xpath("//a[text()='次へ']")[0] break unless nxt page = agent.get(nxt["href"]) end
長い行ができてしまったが、途中改行もしにくい。
XPATH文字列を定数に代入する案もあるが、XPATHの中が見えないとその後のxpathの引数がわかりにくいので、やはりそのまま書くべき。
最初のmapの手前で改行かなあ。