今回の内容は、DataSpider × 株価データ についてです 。
Webページにある株価データをDataSpiderでまとめてCSVファイルに出力します。
…という内容のブログを代わりに書いてください!と指令がありましたので、友松に代わりまして代打 對馬がお送りします。
また、本シナリオはアシスト 吉野さんよりご提供いただきました。
ありがとうございます。
はじめに
今回データを取得するWebページは、 Yahoo! ファイナンスです。
Yahoo! ファイナンスは、Yahoo! が運営する株価・為替の総合情報サイトです。
このサイトでは銘柄と期間を指定して株価データをデイリー、週間、月間で参照できます。
DataSpiderを使って株価データをまとめて取得、さらに複数の銘柄を一気に取得するスクリプトをご紹介します。
早速ですが全体図
全体のスクリプトはこんな感じです。
ウェブからXMLでデータを取得。XML→CSVへ変換・出力という処理を各銘柄のページ数分行います。
詳細説明
それでは詳しく中身を見てみましょう。
全体図に記載がありませんでしたが、
証券コード、銘柄、ページ数 はスクリプト変数として用意してます。
銘柄一覧読み取り(Excel)
東証サイトからダウンロードした上場企業リスト(first-d-j.xls)から、証券コードを取得します。
そして証券コードの件数分、処理を繰り返す指定(Loop/foreach)をします。
ページ数分Loop
またページ数だけ処理を繰り返すため、ページ数分のLoop指定をします。
ページ数はパラメータで指定する期間によって変化するので、読み取りたいページ数を確認しておきます。
今回は2014年1月1日~2014年12月31日の1年分を取得します。
ページ数を確認すると13ページまであるので、13回繰り返します。
Webアダプタ「巡回(ファイル/パラメータ)」
Webページにパラメータを渡して、取得したデータをファイルに書き込みます。
元コンポーネントのデータモデルはXML型です。
ここでパラメータの指定をします。
証券コードで銘柄を、また取得する期間を指定できます。
【URLパラメータの指定】
【Webアダプタグローバルリソース】
■プロトコル:HTTP
■ホスト名 :info.finance.yahoo.co.jp
■ポート :80
XML→Mapping→CSV
XMLの株価テーブル部分をCSVへ変換、出力します。
【Mapping画面】
株価テーブルのみCSVへ出力します。
ページの区切りごとに空データが取得されるので、条件をかけて省略します。
※条件:日付に「年」を含む
いざ実行!
早速、実行してみましょう。
期間:2014年1月1日~2014年12月31日(ページ数:13)
ターム:デイリー
ぐるぐるループ中…。
バーン!
ムムッ、ここでエラーです。
Webページにアクセスしすぎたらしくはじかれちゃいました。
読み取る銘柄が1878件もあってデイリーデータを取得しようとしているので、…当たり前ですね。
仕方がありませんので、銘柄1件の株価データを取得してみます。
Webから読み取れることが伝われば…伝わりさえすれば!!
いざ!!
さすがに成功しました。
出力先CSVはこんな感じです。
1年分ばっちり書けております。
最後に
今回はWebページへのアクセスが集中してしまったためのエラーの都合上、
読み取る銘柄を1つでのテストとなりました。
解決策としては、待機アイコンを使って時間をかけて処理を行うことで、
アクセス集中を緩和することができます。
また読み取る銘柄を選択できるだけでなく、出力形式をデイリー・週間・月間に変更するなど
出力するデータのカスタマイズも可能です。
このようにDataSpiderでは自分の好きなデータを好きな分だけ取得し、
好きな形式で出力し管理を行えます。
皆様も身近なデータを使ってWebデータ取得・出力を試してみてはいかがでしょうか。
レッツ!データ連携!です。