JRA単勝オッズ取得を自動化!Excel Power Queryでレース名と時刻も表示する方法
競馬予想をする上で、最新のオッズ情報は欠かせませんよね。 JRAのWebサイトから手動でオッズをコピー&ペーストするのは面倒...と感じている方もいるのではないでしょうか?
そんな悩みを解決するのが、Excel Power Queryです!
Power Queryを使えば、JRAのWebサイトから単勝オッズを自動で取得し、さらにレース名やオッズ時刻、レース番号までまとめて表示できます。
Excel Power QueryでJRA単勝オッズを取得する方法を動画で解説
今回は、実際にExcel Power Queryを使ってJRA単勝オッズを取得する方法を動画で解説しました。
動画はこちら 👉 https://www.youtube.com/watch?v=QpTfN7BmeVc
オッズ表の取得
まずは、JRAのWebサイトからオッズ表を取得します。 00:20 前回動画の復習 で紹介しているように、Power Queryを使えば、Webページ上の表データを簡単にExcelに取り込むことができます。
レース名とオッズ時刻の抽出
次に、HTMLソースコードからレース名とオッズ時刻を抽出します。
08:25 HTMLから情報を抽出 では、Text.BetweenDelimiters
関数を使って特定の文字列の間にある情報を取得する方法を解説しています。
カスタム列の追加
抽出したレース名とオッズ時刻は、カスタム列としてオッズ表に追加します。 13:31 カスタム列を追加 を参考に、Power Queryの「カスタム列の追加」機能を使って、見やすく整理された表を作成しましょう。
人気順のオッズ表への適用
人気順のオッズ表にも、同様の手順でレース名とオッズ時刻を追加できます。 19:17 人気順のオッズ表にも追加 で解説しているので、ぜひ試してみてください。
レース番号の取得
29:07 レース番号を取得 では、HTMLソースコードからレース番号を抽出する方法を紹介しています。レース名、オッズ時刻、レース番号が揃えば、完璧なオッズ表が完成します。
前日オッズの取得
36:49 前日オッズを取得 では、応用編として前日オッズを取得する方法を解説しています。
このブログで説明したこと、伝えたかった事
a) 説明したかったこと・伝えたかったこと
- Excel Power Queryを使えば、JRAのWebサイトから簡単にオッズ情報を取得できる
- HTMLソースコードから必要な情報だけを抽出する方法
- 抽出した情報をカスタム列として追加し、見やすい表を作成する方法
- Power Queryは競馬予想だけでなく、様々なデータ分析に活用できる
b) 未解決の問題点・積み残しの課題
- レース番号取得の部分は説明が簡略化されているため、詳細な手順を解説する必要がある
- HTMLソースコードや
Text.BetweenDelimiters
関数の解説は、初心者には難しいと感じる可能性がある
c) 積み残しの課題に対する提案
- レース番号取得の詳細な手順を解説する動画を作成する
- HTMLソースコードの構造や
Text.BetweenDelimiters
関数の使い方を図解などで分かりやすく説明する補足資料を作成する
ソースコード
ライブ動画内で作成したパワークエリのソースコード
// 天皇賞(秋)の単勝オッズ取得サンプル let strURL = "https://www.jra.go.jp/JRADB/accessO.html", strPARA = Text.ToBinary("cname=pw151opS305202404081120241027Z/19"), strHEAD = [#"Content-Type"="application/x-www-form-urlencoded"], ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]), 文字列 = Text.FromBinary(ソース, 932), // BetweenDelimitersで間を取得、便利かも? // いつもの耳(ダブルコーテーション)が二つに注意 レース名 = Text.BetweenDelimiters(文字列, "<span class=""race_name"">", "<"), 時刻 = Text.BetweenDelimiters(文字列, "<div class=""cell time""><strong>", "<"), レース番号 = Text.BetweenDelimiters(文字列, "<span class=""opt"">", "<"), HTMLtest = Web.Page(文字列), TB0 = HTMLtest{0}[Data], 追加されたカスタム = Table.AddColumn(TB0, "レース名称", each レース名), 追加されたカスタム1 = Table.AddColumn(追加されたカスタム, "カスタム時刻", each 時刻), 追加されたカスタム2 = Table.AddColumn(追加されたカスタム1, "カスタムレース番号", each レース番号), 並べ替えられた列 = Table.ReorderColumns(追加されたカスタム2,{"レース名称", "カスタム時刻", "カスタムレース番号", "人気", "枠", "馬番", "馬名", "単勝", "複勝(3着払い)", "性齢", "馬体重", "負担重量", "騎手名", "調教師名"}) in 並べ替えられた列
// 天皇賞(秋)の単勝オッズ取得サンプル let strURL = "https://www.jra.go.jp/JRADB/accessO.html", test = 123, strPARA = Text.ToBinary("cname=pw151ouS305202404081120241027Z/F7"), strHEAD = [#"Content-Type"="application/x-www-form-urlencoded"], ソース = Web.Contents(strURL, [Headers = strHEAD, Content = strPARA]), 文字列 = Text.FromBinary(ソース, 932), // BetweenDelimitersで間を取得、便利かも? // いつもの耳(ダブルコーテーション)が二つに注意 strレース名 = Text.BetweenDelimiters(文字列, "<span class=""race_name"">", "<"), str時刻 = Text.BetweenDelimiters(文字列, "<div class=""cell time""><strong>", "</strong></div>"), HTMLtest = Web.Page(文字列), TB0 = HTMLtest{0}[Data], 追加されたカスタム = Table.AddColumn(TB0, "レース名", each strレース名), 追加されたカスタム1 = Table.AddColumn(追加されたカスタム, "オッズ時刻", each str時刻), 並べ替えられた列 = Table.ReorderColumns(追加されたカスタム1,{"レース名", "オッズ時刻", "枠", "馬番", "馬名", "単勝", "複勝(3着払い)", "性齢", "馬体重", "負担重量", "騎手名", "調教師名"}) in 並べ替えられた列
検索リンク:
a. 大分類キーワード Excel, Power Query, Webスクレイピング
GoogleでExcel, Power Query, Webスクレイピングを検索する
YouTubeでExcel, Power Query, Webスクレイピングを視聴する
b. ピンポイント検索 Excel, Power Query, JRA, オッズ
GoogleでExcel, Power Query, JRA, オッズを検索する
YouTubeでExcel, Power Query, JRA, オッズを視聴する
c. 合わせて確認してほしい検索 Power Automate, Webスクレイピング
お勧め理由: Power Automateは、Power Queryで取得したデータをさらに自動処理するのに役立つツールです。Webスクレイピングと組み合わせることで、定期的にデータを更新したり、他のアプリケーションと連携したりするなど、様々な自動化を実現できます。