DataSpiderによる株価データ抽出変換

Avatar
dstn


今回の内容は、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型です。
Webアダプタ

ここでパラメータの指定をします。
証券コードで銘柄を、また取得する期間を指定できます。

【URLパラメータの指定】
URL
パラメータ

【Webアダプタグローバルリソース】
グローバルリソース

■プロトコル:HTTP
■ホスト名 :info.finance.yahoo.co.jp
■ポート :80

XML→Mapping→CSV


XMLの株価テーブル部分をCSVへ変換、出力します。

【Mapping画面】
Mapping

株価テーブルのみCSVへ出力します。

ページの区切りごとに空データが取得されるので、条件をかけて省略します。
※条件:日付に「年」を含む

いざ実行!


早速、実行してみましょう。

期間:2014年1月1日~2014年12月31日(ページ数:13)
ターム:デイリー

実行中
ぐるぐるループ中…。

バーン!
エラー

ムムッ、ここでエラーです。
Webページにアクセスしすぎたらしくはじかれちゃいました。
読み取る銘柄が1878件もあってデイリーデータを取得しようとしているので、…当たり前ですね。

仕方がありませんので、銘柄1件の株価データを取得してみます。
Webから読み取れることが伝われば…伝わりさえすれば!!
いざ!!

成功
さすがに成功しました。
出力先CSVはこんな感じです。
実行CSV

1年分ばっちり書けております。

最後に


今回はWebページへのアクセスが集中してしまったためのエラーの都合上、
読み取る銘柄を1つでのテストとなりました。
解決策としては、待機アイコンを使って時間をかけて処理を行うことで、
アクセス集中を緩和することができます。

また読み取る銘柄を選択できるだけでなく、出力形式をデイリー・週間・月間に変更するなど
出力するデータのカスタマイズも可能です。

このようにDataSpiderでは自分の好きなデータを好きな分だけ取得し、
好きな形式で出力し管理を行えます。
皆様も身近なデータを使ってWebデータ取得・出力を試してみてはいかがでしょうか。
レッツ!データ連携!です。

コメント

ログインしてコメントを残してください。

Powered by Zendesk