2008年1月16日水曜日

投資信託の基準価格をスクレイピング

スクレイピングとはHttp/XMLが整っていないWeb環境で必要なデータを取得するための
技術を指す。要するに強引に必要なデータだけをHTMLから取得すること。最近知った言葉。

新生銀行で取り扱っている投資信託の基準価格をスクレイピングにより取得する
rubyにより実装してみる。対象のHTMLは下記のURI

http://qweb6.qhit.net/i_users/shinseibank/qsearch.exe?F=users/shinseibank/fundlist

1. httpクラスのgetメソッドにてHTMLを取得する
2. HTMLをパーシングするのは面倒なので、正規表現で基準価格とのデータのみゲット。
3. 標準出力へ投信信託名、販売会社、基準価格を出力する

新生銀行のWebページがSJISなのでソースコードもSJISとした。
ubuntu(UTF-8)の端末を使用しているので、エンコードも付け加えた。

WindowsもしくはSJIS環境であれば require 'kconv'、.toutf8は必要ない

ソース Shinsei.rb

#!/usr/local/bin/ruby -Ks
require 'net/http'

module InvestmentTrust
class HttpError < StandardError; end
def InvestmentTrust.page_get(host, path)
require 'net/http'
Net::HTTP.version_1_2
res = nil
req = Net::HTTP::Get.new(path)
Net::HTTP.start(host) {|http|
res = http.request(req)
if res.code.to_i != 200
raise HttpError, "HTTP Status Error [#{res.code}]"
end
}
res.body
end
end

class Shinsei
SHINSEI_URL = 'qweb6.qhit.net'
SHINSEI_PATH = '/i_users/shinseibank/qsearch.exe?F=users/shinseibank/fundlist'
REGEX = %r{
(\w+)</A></TD>
¥s+<TD¥sclass="s1">(\w+)</TD>
¥s+<TD¥sclass="s2"¥salign="center">(¥d+/¥d+)</TD>
¥s+<TD¥sclass="s2"¥salign="right"¥snowrap>(¥d+)¥s円<BR><span¥sclass="f[p|m]">([¥+¥-]¥d+)</span>¥s円</TD>
¥s+<TD¥sclass="s2"¥salign="right"¥snowrap>([¥d¥.]+)<br>億円</TD>
}xs

def get()
require 'kconv'
data = InvestmentTrust.page_get(SHINSEI_URL, SHINSEI_PATH)
data.scan(REGEX).each do |m|
puts "#{m.shift} 運用会社 #{m.shift}".toutf8
puts " 日付 #{m.shift} 基準価格 #{m.shift}円 #{m.shift}円 総資産#{m.shift}億円".toutf8
end
end
end

if __FILE__ == $0
s = Shinsei.new
s.get
end


出力

$ ruby -Ks shinsei.rb
インデックスファンド225 運用会社 日興アセット
日付 01/15 基準価格 3689円 -36円 総資産1954.07億円
フィデリティ・日本成長株・ファンド 運用会社 フィデリティ
日付 01/15 基準価格 14777円 -404円 総資産3581.43億円
フィデリティ・日本配当成長株・ファンド(分配重視型) 運用会社 フィデリティ
日付 01/15 基準価格 8364円 -139円 総資産1526.11億円
ダイワ・バリュー株・オープン(愛称:底力) 運用会社 大和投信
日付 01/15 基準価格 10130円 -281円 総資産598.90億円
クレディ・スイス・ジャパン・グロース・ファンド 運用会社 クレディスイス
日付 01/15 基準価格 8616円 -178円 総資産26.10億円
インベスコ店頭・成長株オープン 運用会社 インベスコ
日付 01/15 基準価格 20969円 -1161円 総資産111.61億円
225インデックスファンド 運用会社 T&D
日付 01/15 基準価格 3087円 -31円 総資産55.55億円
MSCIインデックス・セレクト・ファンド コクサイ・ポートフォリオ 運用会社 モルガンスタンレー
日付 01/15 基準価格 13596円 -235円 総資産52.34億円
グローバル・ハイインカム・ストック・ファンド 運用会社 野村アセット
日付 01/15 基準価格 10303円 -189円 総資産2618.37億円
アメリカン・ドリーム・ファンド 運用会社 新生インベストメント
日付 01/15 基準価格 8026円 -201円 総資産31.15億円
JPM・BRICS5・ファンド(愛称:ブリックス・ファイブ) 運用会社 JPモルガン
日付 01/15 基準価格 20697円 -465円 総資産1498.35億円
新生・フラトンVPICファンド 運用会社 新生インベストメント
日付 01/15 基準価格 9143円 -165円 総資産169.01億円
JFアジア株・アクティブ・オープン 運用会社 JPモルガン
日付 01/15 基準価格 25457円 -1289円 総資産348.56億円
HSBCチャイナオープン 運用会社 HSBC
日付 01/15 基準価格 45303円 -2160円 総資産668.27億円
HSBCインドオープン 運用会社 HSBC
日付 01/15 基準価格 34359円 -717円 総資産1834.77億円
HSBCブラジルオープン 運用会社 HSBC
日付 01/15 基準価格 15469円 -446円 総資産1298.66億円
SG ロシア東欧株ファンド 運用会社 ソシエテジェネラル
日付 01/15 基準価格 15875円 -394円 総資産148.11億円
新生・UTIインドファンド 運用会社 新生インベストメント
日付 01/15 基準価格 13570円 -212円 総資産575.41億円
MHAM物価連動国債ファンド 運用会社 みずほ
日付 01/15 基準価格 10357円 +1円 総資産95.70億円
グローバル・ソブリン・オープン(毎月決算型) 運用会社 国際投信
日付 01/15 基準価格 7799円 -69円 総資産55051.91億円
世界のサイフ 運用会社 日興アセット
日付 01/15 基準価格 9936円 -120円 総資産1262.69億円
LM・オーストラリア毎月分配型ファンド 運用会社 レッグ・メイソン
日付 01/15 基準価格 11057円 -98円 総資産1082.67億円
ガリレオ 運用会社 ゴールドマン
日付 01/15 基準価格 9554円 +2円 総資産219.53億円
エマージング・カレンシー・債券ファンド(毎月分配型) 運用会社 新生インベストメント
日付 01/15 基準価格 9950円 -52円 総資産1271.50億円
ニッセイ/パトナム・インカムオープン 運用会社 ニッセイ
日付 01/15 基準価格 6877円 -170円 総資産4394.38億円
エマージング・ソブリン・オープン(毎月決算型) 運用会社 国際投信
日付 01/15 基準価格 10223円 -158円 総資産752.94億円
高利回り社債オープン(毎月分配型) 運用会社 野村アセット
日付 01/15 基準価格 8988円 -129円 総資産423.11億円
高利回り社債オープン・為替ヘッジ(毎月分配型) 運用会社 野村アセット
日付 01/15 基準価格 9051円 +8円 総資産1.25億円
ドイチェ・ヨーロッパインカムオープン 運用会社 ドイチェ
日付 01/15 基準価格 13263円 -124円 総資産179.51億円
新生・世界分散ファンド(複利効果重視型) 運用会社 新生インベストメント
日付 01/15 基準価格 9492円 -98円 総資産12.04億円
新生・世界分散ファンド(分配重視型) 運用会社 新生インベストメント
日付 01/15 基準価格 9537円 -99円 総資産5.45億円
新生・4分散ファンド 運用会社 中央三井AM
日付 01/15 基準価格 9206円 -108円 総資産12.38億円
世界の財産3分法ファンド(不動産・債券・株式)毎月分配型 運用会社 日興アセット
日付 01/15 基準価格 9686円 -225円 総資産1524.72億円
フィデリティ・バランス・ファンド 運用会社 フィデリティ
日付 01/15 基準価格 13287円 -196円 総資産231.83億円
ドイチェ・ライフ・プラン30 運用会社 ドイチェ
日付 01/15 基準価格 10910円 -79円 総資産123.02億円
ドイチェ・ライフ・プラン50 運用会社 ドイチェ
日付 01/15 基準価格 10650円 -130円 総資産94.28億円
ドイチェ・ライフ・プラン70 運用会社 ドイチェ
日付 01/15 基準価格 10360円 -154円 総資産19.03億円
JPMワールド・CB・オープン 運用会社 JPモルガン
日付 01/15 基準価格 9900円 -31円 総資産251.59億円
ラサール・グローバルREITファンド(毎月分配型) 運用会社 日興アセット
日付 01/15 基準価格 11783円 -138円 総資産253.04億円
フィデリティ・USリート・ファンドA(為替ヘッジあり) 運用会社 フィデリティ
日付 01/15 基準価格 10246円 -76円 総資産5.06億円
フィデリティ・USリート・ファンドB(為替ヘッジなし) 運用会社 フィデリティ
日付 01/15 基準価格 11526円 -316円 総資産24.72億円
REITオープン 運用会社 大和投信
日付 01/15 基準価格 13184円 -462円 総資産126.29億円
日本トレンド・セレクト ハイパー・ウェイブ 運用会社 日興アセット
日付 01/15 基準価格 2541円 -70円 総資産149.76億円
日本トレンド・セレクト リバース・トレンド・オープン 運用会社 日興アセット
日付 01/15 基準価格 11172円 +153円 総資産8.30億円
日本トレンド・セレクト 日本トレンド・マネーポートフォリオ 運用会社 日興アセット
日付 01/15 基準価格 10042円 +1円 総資産15.35億円
日本債券ベア 運用会社 T&D
日付 01/15 基準価格 801円 +2円 総資産29.27億円
ゴールドマン・サックス日本株式マーケット・ニュートラル・ファンド(愛称:GSジャパン・ニュートラル) 運用会社 ゴールドマン
日付 01/15 基準価格 10744円 +7円 総資産131.34億円
ゴールドマン・サックス米国株式マーケット・ニュートラル・ファンド(愛称:GS US・ニュートラル) 運用会社 ゴールドマン
日付 01/15 基準価格 8427円 -67円 総資産16.65億円


ちゃんとすべてのデータが取得できたかは?です

0 件のコメント:

干し芋のリスト