競馬をこよなく愛する皆様。お待たせしました!
本日は、競馬の出馬表をExcelに自動保存する方法について解説していきます。
独自で分析等行いたい方、Targetやスポーツ新聞等にお金をかけるのが嫌な方等には、
ご満足いただけるのではないでしょうか?
この記事では、既に私が作成したファイルの無料ダウンロードに加え、
その作成方法についても触れていきます。
色々と応用が利くとは思いますので、是非皆様の競馬ライフにお役立て下さい!
難しい知識は必要ありません!
それでは、いってみましょう!
競馬出馬表取得ファイルのダウンロードについて
下記より、ダウンロードをお願いいたします。
不具合や改善要望等ございましたら、お問い合わせページからお気軽にご連絡ください。
私の対応できる範囲で、対応させていただきます。
下記がファイルを利用する上での注意事項となります。
ご利用される前に、ご確認をお願いします。
- 個人利用のみ許可: 本Excelファイルは、個人利用に限り無料で提供しております。商業利用や再配布はご遠慮ください。
- 改変の禁止: ファイルの内容を改変しての再配布は固くお断りいたします。必要に応じて個人的にご利用いただくことは問題ありませんが、元の状態を保ったままご利用ください。
- 著作権の尊重: 本ファイルの著作権は当サイトに帰属します。無断での転載やコピーはご遠慮ください。
- 責任の免除: 本ファイルの使用に伴ういかなる損害についても、当サイトは一切の責任を負いかねます。自己責任のもとご利用ください。
- 定期的な更新: 本ファイルは定期的に更新される可能性があります。最新版をダウンロードするために、定期的に当ブログをご確認ください。
- ダウンロードリンクの期限: ダウンロードリンクは予告なく変更または削除されることがありますので、早めのダウンロードをお勧めします。
- フィードバックのお願い: ご利用いただいた感想や改善点がありましたら、お問い合わせフォームからご連絡ください。皆様の声をもとに、より良いコンテンツ作りを目指してまいります。
競馬出馬表取得ファイルの使い方
これからの話はnetkeiba様のサイトを例にしていきます。
そもそもrace_idが何か、という話ですが、
netkeiba様のwebサイトは、このrace_idが各レースごとに振り分けられています。
試しに、出馬表のURLを確認してみます。
https://race.netkeiba.com/race/shutuba.html?race_id=202506010111&rf=race_submenu
上記URLの場合、race_idは、race_ie=の次の「202506010111」 となります。
この番号を別の番号に変更することで、異なるレースの出馬表にアクセスできます。
実際WEBサイトで確認してみるのが一番早いですね。
例えば上記race_idの末尾を11から10に変更し、「202506010110」というrace_idにすると、
一つ前の10Rの出馬表にアクセスできます。
Excelを開き、「race_id入力」シートに移動します。
2行目以降に取得したい出馬表のrace_idを入力します。
複数のrace_idをまとめて入力することも出来ますが(3行目以降)、
netkeiba様のwebサーバーに負荷をかけてしまうので、
1回当たりの実行は多くても20件程度に留めるようお願いします。
合わせて、注意点を記載します。
上の例は、6件race_idを入力していたのですが、3件が不要となり
データを消した状態です。
このように、末尾に空白のテーブルデータが残っていると、
データがうまく取得できないので、空白行は削除をお願いします。
①空白行を選択
②「削除」をクリック
このように、空白のテーブルが発生しない状態にして実行をお願いします。
①「出馬表」シートに移動
②出馬表が表示されているセルをどこか選択
③「クエリ」タブをクリック
④「更新」をクリック
読み込まれるのに数秒かかります。
指定したrace_idに基づいた出馬表が抽出されます!
競馬出馬表取得ファイルの作り方
これからは、ファイルの作成方法について解説していきます。
正直中々メンドクサイ(ややこしい)ので挑戦される方は覚悟お願いします(笑)
データ取得に関しては、ExcelのPower Query(パワークエリ)という機能を使っています。
パワークエリは、簡単に言うとデータの取得、変換、統合等を効率的に行える機能のことです。
プログラミングの知識が無くても、感覚的に使うことが可能です。
それでは、順を追って、記載していきます。
正直、最初は難しく感じるかもしれないです。
ですが、操作していくうちに慣れてくると思います!
今回取得する競馬の出馬表ですが、netkeiba様の出馬表をExcelに取得していきます。
今回はこちらの2025年1月5日(日)に開催された、中山11R(中山金杯)の
出馬表を取得していきたいと思います。
パワークエリでは、WEBページのURLを参照して、データを取得します。
該当のWEBページのURLをコピーします。
URLは、画面上部のアドレスバーより確認できます。
今回の一番のキモとなるので、上記URLの「race_id」の部分です。
具体的に言うと、「202506010111」がそれにあたります。
詳しくは記載しませんが、この数字の並びには法則性があり、
こちらを書き換えることによって、別のレースの出馬表を参照することが可能となります。
例えば1R分の出馬表を取得する場合であればそこまで意識することはないですが、
複数のレースの出馬表を取得したい場合、毎回作成作業を繰り返すのは面倒です。
この部分を加工して参照することにより、効率よくデータ取得が可能となります。
①「データ」タブをクリック
②「Webから」をクリック
③取得したいURLを張り付ける
④「OK」をクリック
接続しています~とメッセージが表示され、すこし待つとこのような画面が表示されます。
左側の項目(テーブル~)は、取得しようとしているWEBページによって、異なってくると思うので、
画像通りにはならないと思います。(気にしなくていいです)
⑤「例を使用してテーブルを追加」をクリック
まずは、こちらの列に取得したいデータのタイトルを入力していきます。
例1という部分をダブルクリックして入力していきます。
当然複数列が必用なので、横の+ボタンで列を追加していきます。
⑥取得したいテーブル列の名前をそのまま順番に入力していく
今回は「人気」列までを取得することとします。
⑦一行目のデータをセルをダブルクリックして、入力していく
予測変換が表示されます。直接入力するか、該当の正しいデータを選択していきます。
こちらのデータは取得するデータと同じ内容にしてください。
(入力は若干クセある感じがします、、、)
⑧一行目のデータが正しく入力されていることを確認する
(上記画像は3つに分けていますが、実際は、横につながっています)
⑨2行目も同様に値を入力し、ダブルクリック(エンター)すると、
他の列にもデータが格納されます。
列名が元のデータと一致していないと、正しくデータが格納されない可能性があるので
注意が必要です。
データが正しく反映されているのを確認し、「OK」をクリックします。
⑩「読み込み」をクリック
出馬表がExcelに表示されました!
上記でも触れていますが、1R分の出馬表取得ならこの方法で完了です。
ですが、別のレースの出馬表を取得したりしたい場合、
同じプロセスでデータを取得するのは面倒ですよね?
ですので、柔軟にデータ取得を可能にするため、もう少しお付き合いください、、、
皆さんついてこれてますか??
焦らず、正確に入力していきましょう!
先ほどの出馬表が表示されたシートではない、別の新規シートに入力していきます。
①1行目に「race_id] と入力
②2行目に該当のrace_idを入力(ここでは、202506010111 と、入力しています。
表示形式の関係でおかしな感じに見えますが、今は気にしなくていいです)
繰り返しになりますが、取得するWEBサイトの、race_id = 以下の数字がrace_idとなります。
https://race.netkeiba.com/race/shutuba.html?race_id=202506010111&rf=race_submenu
③シート名を変更
ここでは、「race_id入力」としてます
④A列全体をクリック(Aの部分をクリック)
A列全体が選択されていることを確認します。
⑤右クリック → 「セルの書式設定」をクリック
⑥「文字列」をクリック
⑦「OK」をクリック
⑧見た目上は何も変わっていないように見えますが、これでOKです。
①データを選択
②「データ」タブをクリック
③「テーブルまたは範囲から」をクリック
④チェックが入っていることを確認(入っていなかったら、チェックをつける)
⑤「OK」をクリック
Power Queryエディターが立ち上がります
⑥ 123 のアイコンをクリック
⑦「テキスト」をクリック
⑧「新規手順の追加」をクリック
⑨画面右側に表示されているクエリの設定より、名前を 「出馬表」と打ち換える
⑩「閉じて読み込む」をクリック
少し脱線しますが、現時点でExcelのシートは
①WEBサイトから読み込まれた出馬表が表示されているシート(ここではテーブル17)
※17という数字に意味は無いので、合致している必要はありません
②パワークエリで読み込こまれ作成されたシート(ここでは、「出馬表」)
③パワークエリでrace_idを読み込ませるために作成したシート(ここでは、「race_id入力」)
の、3シートで構成されている状態になっています。
シートが複数登場して、訳が分からなくなってくるので、一旦整理です
①出馬表が表示されているシートに移動する
②出馬表内のセルを選択
③「クエリ」タブをクリック
④「編集」をクリック
⑤「詳細エディター」をクリック
⑥ let から 変更された型 まで 全てコピーし、右下の「完了」をクリック
(Clrl + A で全選択 → Ctrl + C でコピーが便利)
⑦「閉じて読み込む」をクリックし、画面を閉じる
⑧新規シートに、コピーした構文を張り付けておく
(これはあくまで仮保存なので、シート名などは特に変更する必要はないです)
別で、テキストファイルを用意してそちらに張り付けておいても問題ないです。
この次のステップでこの構文を張り付ける必要があるので、そのための一時保存です
①Step7-8 で、貼り付けておいた構文を全てコピー
②「データ」タブをクリック(どのシート上でも構いません)
③「データの取得」をクリック
④「その他のデータソースから」をクリック
⑤「空のクエリ」をクリック
⑥「詳細エディター」をクリック
⑦紛らわしいので、一度中身を全てクリアして、コピーした構文を張り付ける
張り付けた構文の、□で囲んでいるのが、race_idの部分です。
この部分を打ち換えていきます。
ここめちゃくちゃ大事です。この部分が正しく入力されていないと、
データが正しくよみこまれません。
⑧let と入力されている行で、エンターキーを押して、letの行を2行目にします。
1行目に (race_id as text) = > と、入力
⑨race_id(202506010111)の部分を消して、 ” & Text.From(race_id) & “ と、入力
正しく入力されているのを確認し、右下の「完了」をクリックします
⑩名前を 「GetRaceData」と入力します。
⑪「閉じて読み込む」をクリック
①出馬表シートに移動する
②race_idを選択
③「クエリ」タブをクリック
④「編集」をクリック
⑤ 「ファイル」をクリック
⑥ 「オプションと設定」をクリック
⑦ 「クエリのオプション」をクリック
⑧「プライバシー」をクリック
⑨「ブライバシーを無視すると~」の部分にチェック
⑩「OK」をクリック
プライバシーの設定が完了すると、こちらの画面に戻ります。
①「列の追加」タブをクリック
②「カスタム列」をクリック
③ GetRaceData([race_id]) と、入力します。
これはSTEP8で作成した、GetRaceData を呼び出すための式です。
こちらを記載することにより、該当のrace_id によって、出馬表が取得可能となります
④「OK」をクリック
⑤このように、「Table」と表示されていたら成功です(正しくデータがよみこまれています)
この部分が、Error と表示されている場合は、これまでの設定でどこか不備があります、、、
この部分、私は何度もErrorが出ました。
失敗していた部分を記事上に落とし込んだつもりです。
⑥ ←→アイコンをクリック
⑦「元の列名~」のチェックを外す
⑧「OK」をクリック
⑨「ホーム」タブをクリック
⑩「閉じて読み込む」をクリック
race_idに紐づいた出馬表が抽出されました!
ここまで大変だったと思います、、、
お疲れ様でした!
ここまでの例では、一つのrace_idを読み込ませて、出馬表を取得しました。
別のrace_idを読み込ませたり、複数のrace_idをまとめて取得する方法について解説します。
①「race_id」入力シートに移動します。
②取得したいrace_idを入力します。
例として上記で取得した11Rの前の7R~10Rを取得してみます。
(末尾の数字を変更しただけです)
STEP4でも触れていますが、こちらの入力値が文字列になっているか確認してくださいね~
こちらのrace_idの取得は1回の実行で多くても20件程度に
してください。
netkeiba様のwebサーバーに負荷をかけてしまうことになるので、
最悪の場合アクセスブロック(サイトにアクセスできなくなる)
される可能性があります。
①「出馬表」シートに移動する
②出馬表内のセルを選択する
③「クエリ」タブをクリック
④「更新」をクリック
race_idごとに連続してデータが取得できました。
終わりに
いかがでしたか?
ファイルのベース作りは中々面倒だったと思います。
パワークエリのいい点としては、高度なプログラム知識をもっていなくても
データ取得が出来る一方、複雑なサイトのデータ取得は難しいんですよね~
netkeiba様のサイトのようにテーブル形式(表)になっているサイトですと、
割と簡単に取得することができます。
同じ理屈で、レース結果のテーブルや、馬の過去成績テーブルの取得も可能です。
リクエストあれば、こちらの作成方法についても記事にしたいと思います。
それ以外にも、ご意見・ご要望等 お待ちしております!
ここまでお読みいただきありがとうございました!
次の記事でお会いしましょう~