基準価格を取得するスクリプトを作成しました。
これをcrontab(windows ならタスク)で自動起動させ結果を
gmailで飛ばすとかなり便利です。rubyではgmailerという
ライブラリがすでにあります。
私はこれで毎朝、携帯に全投資信託の基準価格を送信して
一喜一憂しております。
実行時はソースファイルをsjisで保存。
ruby sg.rb
ソース sg.rb
require 'uri'
require 'net/http'
$KCODE="s"
class HttpError < StandardError; end
class Sg
SG_URL = 'http://www.sgam.co.jp/html/kagaku01.htm'
attr_reader :day, :value, :diff
def initialize
@data = self.get(SG_URL)
self.parse
end
def get( url, query=nil )
target_uri = URI.parse( url )
resp_data=nil
path = target_uri.path
if query != nil
path = path + '?' + query
end
Net::HTTP.version_1_2
Net::HTTP.start(target_uri.host, 80) {|http|
req = Net::HTTP::Get.new(path)
response = http.request(req)
if response.code != "200"
raise HttpError, "Http Conection Error."
end
resp_data = response.body
}
if resp_data == nil
raise HttpError, "Http Receive Error."
end
resp_data
end
def parse
regex = %r{
<!--Date-->
¥s+([\d\/]+)
¥s+現在</font></p>
¥s+</td>
¥s+</tr>
¥s+</table>
}xs
# 日付を取得
@day = $1 if @data =‾ regex
regex = %r{
<tr>
¥s+<td>¥s<a¥shref=141005_arab_m.html¥starget=¥'_top¥'>SG¥sアラブ株式ファンド</a>¥s</td>
¥s+<td¥salign=center¥snowrap>¥s([¥d¥,]+)¥s</td>
¥s+<td¥salign=center¥snowrap>¥s([¥d¥-¥+]+)¥s</td>
¥s+<td¥salign=center¥snowrap>¥s[¥d¥,]+¥s</td>
¥s+</tr>
}xs
# 日付を取得
if @data =~ regex
@value = $1; @diff = $2
else
raise "ERROR 解析失敗"
end
end
end
if __FILE__ == $0
sg = Sg.new
puts "SG ARAB #{sg.day} #{sg.value} #{sg.diff}"
end
実行結果
$ ruby sg.rb
SG ARAB 2008/2/4 10,029 25
0 件のコメント:
コメントを投稿