忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Yahoo!ファイナンスから為替時系列データをダウンロード
為替時系列データをYahoo!ファイナンスからダウンロードするためのソースコードを書きました。

Yahoo!ファイナンスでは、1999年からのデータが公開されています。このソースでは米ドル/円、豪ドル/円、英ポンド/円、カナダドル/円、スイスフラン/円、欧州ユーロ/円のレートを取得できます。保存先のファイル名は、それぞれ usdjpy.csv、audjpy.csv、gbpjpy.csv、cadjpy.csv、chfjpy.csv、eurjpy.csv です。
データは日付、始値、高値、安値、終値の順に記録されます。例、2008/9/22/,123.4,123.4,123.4,123.4

currency_exchange_rate.rb
require "open-uri"
require "date"
require "nkf"

today = Date.today
last_day = Date.new(1999,1,1)

exchange_type = ["usdjpy","audjpy","gbpjpy","cadjpy","chfjpy","eurjpy"]

exchange_type.each{|k|
    open("#{k}.csv","w"){|file|
        0.step(today - last_day,50){|i|
            url = open("http://table.yahoo.co.jp/t?s=#{k}=x&a=#{last_day.month}&b=#{last_day.day}&c=#{last_day.year}&d=#{today.month}&e=#{today.day}&f=#{today.year}&g=d&q=t&y=#{i}&z=#{k}=x&x=.csv")
            text = url.read
            text_sjis = NKF.nkf("-s",text)
            text_sjis.scan(/<small>(\d*)年(\d*)月(\d*)日<\/small>< \/td>.<td><small>([\d\.]*)<\/small><\/td>.<td><small>([\d\.]*)<\/small><\/td>.<td><small>([\d\.]*)<\/small><\/td>.<td><small>([\d\.]*)<\/small>/m){|matched|
                file.print(matched[0],"/",matched[1],"/",matched[2],",",matched[3],",",matched[4],",",matched[5],",",matched[6],"\n")
            }
        }
    }
}
 

悩んだこと
正規表現において".(ドット)"が改行文字にもマッチするための方法がわからなかった。 /hoge/mのようにオプションでmを指定すれば、改行文字にもマッチさせられる。
 

 
PR

トラックバック

トラックバックURL:

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字(絵文字)


最新CM
[10/29 rafting]
最新TB
アクセス解析

ジオターゲティング
カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
プロフィール
HN:
崖の上の宗介
性別:
非公開
ブログ内検索
カウンター
アクセス解析
バーコード