mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Yahoo!ファイナンス - 株価データ取得・その後!

[ pc_tips, 株式 ] [ VisualBasic, Yahoo ]

【はじめに】
Yahoo!ファイナンス掲載情報の自動取得(スクレイピング)は禁止されています。(参照
以下の記事を参考にすることもお勧めしません。

こんばんは。

最近、

  • VisualBasic2008Express
  • SQLServer2008Express
  • Excel2003

で Yahoo!ファイナンス から株価データを取得して指標を計算させたりするようなシステムを開発中なんですが、

取得した株価データをよく見てみると日付が文字化けしているところがあるのを発見しました。

Excel側でVBAでWebクエリを使用してデータを取得しているところで、日付データの"年"、"月"、"日"が"?“になっているものがある。

1ページ50件のデータなんですが、ページ単位でおかしいみたい。

(数年分を連続してデータを取得しているのにあるページだけ突然文字化けする)

ただし、再度取得を試みるとうまくいく。

ちょっと調べてみると、Webクエリでのデータ取得で同様な現象が発生している方がおられました。

よくはわからないけど、ページ切り替えのタイミングでどうやらエンコードがうまくいっていない?!みたい。

ということで、

ExcelVBAでWebクエリを使用してのデータ取得はやめました。

代替手段としてExcelVBAで「 XMLHTTPオブジェクト 」を使用してデータを取得するようにしました。

結果として、文字化けはなくなりました。

しかもデータを取得する時間が3分の1程度に高速化されました。

一石二鳥でした。

と、安心したのもつかの間、取得したデータをチェックしてみましたが、 「 株式の分割 」があると、株価以外の不正な行が出現! こんな感じの行

1
分割: 1株 -> 3株

というわけで、こんなデータを取得した場合は、この行は読み飛ばすようにVBAを修正!

とりあえず、これでOK?!と思います。

また、10年分の全銘柄の株価データ600万件超を再取得します。 これでも計算すると20時間弱かかる計算です。。。 (最初だけなので、我慢我慢!)

※あとで思ったけど、Excel使わなくてもVisualBasicのみでもできるんじゃない?と(未確認!)

ではまた。

Comments