JRAのHPからオッズ取得 三連複のオッズ取得に挑戦 三連複のオッズをExcelに取り込む
ワイドと三連複のオッズを取得したい
と質問があったので、
今回は、三連複のオッズ取得に挑戦してみます。
目次
00:00 挨拶と実行テスト
02:36 オッズのテーブルを判断してExcelに三連複オッズを取得
05:30 三連複の表を探す
08:45 1‐2,1‐3 などを tableのcaptionで判断
11:15 三連複のオッズをExcelのセルに書き出す
13:52 表の探し方ついて
16:40 場所を中京に テスト実行と解説
今回作成したソースコード↓
と合わせてみてください。
※アレンジして使ってみてください。
#オッズ取得 #ExcelVBA #三連複 #マクロ #競馬 #JRA #VBA #デバッグ #テスト
1.開催日・場所は、流用する
単勝オッズの取得から、
開催日と場所の選択は単勝オッズ取得
から流用しました。
2.三連複のオッズを押す
ここも、前回から流用(探す条件:ワイドを3連複に変えただけ)
‘リンクから、レースのTR行を探し、列 ここでは3連複などを返す 20221001追加修正
strLINK = IE_Link_InnerHTML_InStr_TR_TD(oDocument, strRACE, “3連複”)
みたいに、レースと3連複(前回はワイドでした)で指定したリンクを取り出す。
何言ってんだか・・・
オッズのリンクが
1R 単勝複勝 枠連 馬連 ワイド 馬単 3連複 3連単
2R 単勝複勝 枠連 馬連 ワイド 馬単 3連複 3連単
・
・
・
11R 単勝複勝 枠連 馬連 ワイド 馬単 3連複 3連単
12R 単勝複勝 枠連 馬連 ワイド 馬単 3連複 3連単
と、並んでいるので、
※前回のワイド を 3連複に直しただけです。
解説は、前回の
↑を見てください(見て、変な処理を笑ってください・・・)
3.オッズのテーブルを判断して、Excelに三連複オッズを取得
3.1 tableのcaptionで判断?さて、どうしよう・・・
JRAさんのページはしっかり作られていて、勉強になりますね。
さてさて、アプローチ、攻める糸口は・・・
1-2 3,4,5,,,18
1-3 4,5,6,,18
・
・
2-3 4,5,6,,,18
2-4 5,6,,,18
・
・
3-4 5,6,,,18
なので
馬番1のループは 最大 1~16(16-17-18が最後なので)
1
2
3
・
・
馬番1-馬番2 の ループは、馬番2の最初は馬番1の次(あたりまえだろ)
1-2
2-3
3-4
・
・
↑のループになる
なので、
何も考えないで、力業のループを組んでみた。
※テーブルを探すのに、無駄なループが増えるけど・・・
‘テーブルを探す
‘タグの取出しが、.getElementsByTagName(“TABLE”)で 可能なので、
For n馬番1 = 1 To 16 ‘馬番は最大18頭、16-17-18が最後なのでMAX16までループ
For n馬番2 = n馬番1 + 1 To 17 ‘1-2-3 から 1-17-18, 2-3-4,,2-17-18 MAX最終は16-17-18
‘TABLEタグを抜き 複数のテーブルをセット
Set objTABLEs = oDocument.getElementsByTagName(“TABLE”)
‘↑で代入したオブジェクトからテーブルデータを取り出す。
‘探す 1-2,1-3,,,16-17を作成する
str探す文字列 = n馬番1 & “-” & n馬番2
Set objTABLE = Nothing ‘オブジェクトを空にする
For i = 0 To objTABLEs.Length – 1 ‘テーブル数分回す
‘テーブルのcaptionが処理する1-2や1-3かチェック
If objTABLEs(i).Caption.innerText = str探す文字列 Then ‘一致したテーブルGet
Set objTABLE = objTABLEs(i) ‘みつけたらi番目を代入
Exit For
End If
Next i
‘↑で見つかったかチェックする
If objTABLE Is Nothing Then
‘見つからなかったら、終わっていたら、ループを抜ける
Exit For ‘抜ける
End If
3.2 あとは、いつもの objTABLE.Rows.Length で縦の行を移動させて書き込む
‘表をDATAシートに書き出す
‘テーブルからデータを抜き出す、書き出す
For y = 0 To objTABLE.Rows.Length – 1 ‘行のループ
‘データをセルに書く 馬番 馬番 馬番 三連複オッズ
Cells(SET_Y, 1) = n馬番1 ‘馬番キャプション
Cells(SET_Y, 2) = n馬番2 ‘
Cells(SET_Y, 3) = objTABLE.Rows(y).Cells(0).innerText ‘馬番 ここを馬番3にする
Cells(SET_Y, 4) = objTABLE.Rows(y).Cells(1).innerText ‘三連複オッズ
SET_Y = SET_Y + 1
Next y
Next n馬番2
Cells(SET_Y, 1).Select ‘.Selecで位置を移動させると
DoEvents
‘描画すると、遅くなるけど↑固まっているように見えるので
アレンジして、コードを使ってみてください。
もっと、使いやすいコード、
わかりやすい説明をしないとなぁ・・と思いつつ、失礼します。
再生リストの紹介: #JRA #オッズ を #自動取得
↑関連動画の再生リストです
—–
質問や感想などをコメント欄に気軽に書いてください。
#三流プログラマー Ken3
連絡先twitterDM →
ブログとHPを紹介 :
書きかけのメモなど は
サンプルコードなど は
三流君のHPは
に置いてあります。
再生リスト一覧は
——
このチャンネルのメンバーになって特典にアクセスしてください:
^^^^^^
がんばりましょうの #低評価 ボタン
や
ためになったよ #高評価 ボタン
の #リアクション 反応があるとうれしいです。
また、
#質問 , #感想 , #コメント を気軽に書き込んでください。
ありがとう。またね。(また次の動画で会えたらいいな・・・)
コメントを書く