更新日:2023-04-03
株価データ取得ソフト
[日本株データ取得シート]
株価データ取得ソフト[日本株データ取得シート]をご利用いただきありがとうございます。
本サイトでは公開中の[日経225銘柄株価データ取得]で使用した株価取得マクロを簡略化して作成した [日本株データ取得シート]のスクリプトの説明をします。Parserライブラリの使い方の理解の参考になれば幸いです。
このソフトは日本経済新聞のサイトからWEBスクレイピングで株価データを取得します。
本ソフトの入手とセットアップ方法
(1)GASスタンド(https://gas-stand.jp/)から入手の場合、ソフトをコピーして、コピーしたファイルを使います。
(2)GoogleアカウントでChormeにログインしておき、コピーしたファイルをご自分のパソコンのGoogleDriveに保存して、それを使います。
(3)保存した本ソフトのアイコンをダブルクリックで起動します。
(4)最初はGoogleの「承認の確認」画面が出ますので、ユーザーのアカウントを選択して実行してください。
(5)詳細は次ページのセットアップをご覧ください。
本ソフトの機能
①対象は国内の日経225銘柄で、当日の15時の確定データ(終値・始値・高値・安値・出来高など)です。データは1日分のみです。
②実際の売買の注文機能はありません。
(注:GAS+WEBスクレイピングでは20分位の遅延があるためリアルタイム株価の取得は難しい)
本ソフトでは日本株データ取得を2種類のマクロで行います。
①1つ目:公開中のソフト「日経225銘柄データ取得」と同じ方法で株式情報を取得するマクロを使用(オブジェクト変数利用)。WEBスクレイピング-1~WEBスクレイピング-3のページで説明。データは「銘柄情報」シートに展開表示。
説明動画:日本株データ取得シート_オブジェクト変数編(https://youtu.be/6q8u74Byqjc)
②2つ目:表示速度を少し速めたマクロで株式情報を取得する方法(配列変数利用)。WEBスクレイピング-4のページで説明。データは「銘柄情報2」シートに展開表示。
説明動画:日本株データ取得シート_配列変数編(https://youtu.be/VLHDaM3tloQ)
下図の各々のシートのボタンで実行できます。
(注意)ここで説明するスクリプトは機能理解用のため、エラー対策は顧慮していません。あらかじめ記入済み以外の銘柄コードを変更する場合は、必ず実在の東証銘柄コード(半角数字4桁)を使用してください。
GASではスクリプトの実行時間が最長で6分の制限があるので、途中で動作が終了するかもしれません。このマクロではトリガー動作で連続して動作をするような設定をしていませんので、途中で終了した場合は再度「株データ取得」ボタンで継続してください。
下図に本ソフト[日本株データ取得シート]と公開中の[日経225銘柄株価データ取得]の機能の比較を示します。本ソフトは[日経225銘柄株価データ取得]のWEBスクレイピング機能のみを解説するものです。
WEBスクレイピングについて
WEBスクレイピングはサーバーに負荷がかかるという理由で、サイトによっては禁止していることがあります。
サイトのURLの後ろに[robots.txt]を加えて調べると可否の状況がわかるといいます。株式情報を公開しているサイトで筆者もやってみましたが、正直よくわかりません。基本的には「個人の利用でデータをビジネスに流用しない」「アクセス頻度が多くない」場合は目こぼしがあるように思います。下記に有益と思われるサイトの情報を挙げます。
①スクレイピング、クローリングする場合の注意点 (https://docs.pyq.jp/column/crawler.html)
[robots.txt]を実行したときの応答の解釈が説明されています。User-agentでこちらの身元(メルアドなど)を知らせればいい?みたいですが、その方法がよくわからない。
②Yahoo知恵袋「スクレイピングをする際にrobots.txtで検索」(https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11246057221)
スクレイピング制限はGooglebotなどのクローラーを対象にするもので、個人利用の場合はあまり意識しないでいいという解釈。賛成!
③GASによる日本株式・株価の取得方法を解説!グーグルファイナンスからスクレイピング(https://auto-worker.com/blog/?p=3854)
スクレイピングで私が一番参考にしたサイトです。Googleはスクレイピングを許可しているので、このデータを利用したいのですが、ほしい「出来高」データが取得しにくいので、見合わせ。
④Yahoo!ファイナンスのスクレイピングは禁止(https://support.yahoo-net.jp/PccFinance/s/article/H000011276 )
日本のYahooサイトはスクレイピングを禁止しており、代わりに[VIP倶楽部](https://finance.yahoo.co.jp/feature/promotion/vip/information/)という有料(月額2178円)サイトを指定しています。高いので敬遠。
⑤Yahoo Finance USから株価をダウンロードしてみた(https://qiita.com/innovation1005/items/5be026cf7e1d459e9562)
米国のYahoo Financeサイトはスクレイピングができるようです。またYahoo Finance USを利用しているサイトも結構見かけるので問題なさそうと解釈。
⑥日本経済新聞も許可と禁止の両方があります。https://www.nikkei.com/markets/kabu/
データはYahooUSAと同様なデータが得られます。画面構成はこちらの方がわかりやすくてスクレイピングもやりやすい感じ。
下図にGoogle/YahooUSA/日経新聞でrobots.txtを実行したときの応答の一部を記載。また取得できる株式データの比較表を記載。
⑦IMPORTXML関数の使い方!スプレッドシートでWEBスクレイピングしよう! https://monoblog.jp/archives/4088
WEBスクレイピングでHTML情報を解読する方法でIMPORTXMLという関数があります。Parserの代わりに取得したい項目のPathを指定する方法かと理解しています。シートのセルに直接埋め込んでデータを取得するのに便利です。ただこれで試したところ速度が遅い印象があったので、本サイトではまだましと思われるParserライブラリを使っています。
Googleサイトのrobots.txt実行結果
financeはスクレイピングOK
YahooUSAのrobots.txt実行結果
financeはOKのパスも多いが、禁止のパスもある。
日本経済新聞のrobots.txt実行結果
許可と禁止の両方
WEBサイトの株価情報の比較
下図はWEBサイトごとの取得できる株価情報の比較です。サイトによって取得できる情報に違いがあります。Google Financeが好ましいのですが、欲しい出来高情報がない(*1)ので、日本経済新聞から取得することにしました。日経新聞のサイトでは前日終値と配当データがないですが、計算で可能なのと、他にはない過去25日分の株価情報が得られることが便利です。移動平均値を計算する場合、毎日の連続したデータが必要ですが、GoogleとYahooは過去のデータが無料では得られないこと、日経新聞なら数日データが取得できないことがあってもリカバリできる可能性がある。
(*1)Google Financeの米国版には30日平均の出来高データがありますが、国内株ではないようです。
動作環境
GAS(GoogleAppsScript)
GASはインターネット上で使うため、通信環境があれば特にソフトは不要です。Googleアカウントがあればそのまま使えます。CPUの制限も特にありませんが、GASのスクリプト実行時間制限の6分枠を緩和するには高性能CPUの方がストレスなく使えるでしょう。ブラウザはGoogleChromeを推奨。パソコンはWindowsでもChromebookでもOKです。未確認ですが、たぶんMacでもChromeブラウザが使えればOKでしょう。
GASも最近は参考書が多く出ているようですが、Googleはよくサービス内容が変わるので、参考書もそれを覚悟で選ぶ必要があります。むしろ一番頼りになるのはネットでの情報です。
管理人のパソコン環境
OS:Windows10 Pro (64bit)
ブラウザ:Google Chrome
CPU: intel Core i7-11700/@2.5GHz
主メモリ:16GB
Googleアカウント:Business Starter(有料版)