地方競馬DATAは使えない
地方競馬の公式(に近い)データを取りに行くために、競馬最強の法則が提供している地方競馬DATA(2500円くらいかかる)を購入してみたが、これがゴミ。
正確にいうと、地方競馬DATAに対応しているソフトウェアがゴミ。
中央競馬ではターゲットフロンティアがあるので事足りるのだが、地方競馬では同ツールが使えないので、同じようなことができるツールを探すとKEIBA DATA SCOPEしかないのだが、このツールが全く使えない。重いし、データ連携しようとしてもエラーになるしで話にならない。
その他のツールも別途ライセンス購入が必要な予想ツールしかないので、
地方競馬DATAを購入しても連携先のツールがないので使い物にならないが結論。
データ分析の元ネタとして中央競馬と同じようにCSVなりのエクスポートしてくるところをスタートにしようと思ったがまずそれができない。
自力でデータを収集するWebスクレイピング
使えないものは仕方がないので、こうなったら自分でデータを集めてくるしかない。
となると方法はスクレイピングになるので、あまりやりたくなかったがプログラミングやってみた。
自分は環境構築が死ぬほど嫌いなのでいつものとおりエクセルVBAを使った。
<収集元> netkeiba
<ツール> VBA
とりあえずとある日のレース結果から必要な情報をエクセルに書き出すまでは一旦作った。
やり方
参考にしたサイト→https://kabonote.com/excel-vba/getwebtabledata/
コード
FindElementByXPathを使い方がポイント(まだ使いこなしていない)。
Sub netkeiba_scraping()
‘URL
Const TARGET_URL As String = “https://nar.netkeiba.com/race/result.html?race_id=202444042402”‘Chromeドライバのオブジェクトを取得
Dim Driver As New Selenium.ChromeDriver‘Chromeを起動し、指定されたURLのページを表示する
Driver.Get TARGET_URL‘テーブル情報を取得し、エクセルに貼り付ける
Cells(1, 1) = Driver.FindElementByXPath(“/html/body/div[1]/div[2]/div/div[1]/div[3]/div[2]/div[1]”).Text
Cells(2, 1) = Driver.FindElementByXPath(“/html/body/div[1]/div[2]/div/div[1]/div[3]/div[2]/div[2]”).Text
Cells(3, 1) = Driver.FindElementByXPath(“/html/body/div[1]/div[2]/div/div[1]/div[3]/div[2]/div[3]”).TextDriver.FindElementByClass(“ResultTableWrap”).FindElementByTag(“table”).AsTable.ToExcel ThisWorkbook.Worksheets(“sheet1”).Range(“A5”)
Driver.FindElementByClass(“ResultPayBackRightWrap”).FindElementByTag(“table”).AsTable.ToExcel ThisWorkbook.Worksheets(“sheet1”).Range(“A23”)Cells(26, 1) = Driver.FindElementByXPath(“/html/body/div[1]/div[3]/div[5]/div/div/div”).Text
Cells(27, 1) = Driver.FindElementByXPath(“/html/body/div[1]/div[3]/div[5]/table”).Text‘ドライバをクローズし、Chromeを終了する
Driver.Close
Set Driver = NothingEnd Sub
コメント