地方競馬DATAがゴミすぎるので仕方なくVBAでWebスクレイピングしてみた_1

地方競馬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]”).Text

Driver.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 = Nothing

End Sub

コメント

タイトルとURLをコピーしました