三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
Ken3三流君の連絡先:
[google formsで連絡する]
上記の問い合わせフォームに質問・感想など気軽に書き込んでください

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

【天皇賞秋を例に解説】Excel Power QueryでJRAオッズ取得を自動化する方法 もう手動でコピペ不要!

JRA単勝オッズ取得を自動化!Excel Power Queryでレース名と時刻も表示する方法

競馬予想をする上で、最新のオッズ情報は欠かせませんよね。 JRAのWebサイトから手動でオッズをコピー&ペーストするのは面倒...と感じている方もいるのではないでしょうか?

そんな悩みを解決するのが、Excel Power Queryです!

Power Queryを使えば、JRAのWebサイトから単勝オッズを自動で取得し、さらにレース名やオッズ時刻、レース番号までまとめて表示できます。

Excel Power QueryでJRA単勝オッズを取得する方法を動画で解説

今回は、実際にExcel Power Queryを使ってJRA単勝オッズを取得する方法を動画で解説しました。

JRA単勝オッズ取得!Excel Power Queryでレース名と時刻も自動取得する方法

動画はこちら 👉 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スクレイピングと組み合わせることで、定期的にデータを更新したり、他のアプリケーションと連携したりするなど、様々な自動化を実現できます。

GoogleでPower Automate, Webスクレイピングを検索する

YouTubeでPower Automate, Webスクレイピングを視聴する

ランダムな占い

再生リスト:[占い 今日のラッキーカラー]をショート動画

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



[連絡先はココのフォームから]←連絡先の入力フォームです、気軽に書いてください
本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)