saisaikenkenの「してみよ」ブログ

~~~ 仕 事 と 趣 味 の 垣 根 を 無 く し て み よ ~~~

MENU

競馬ラボから過去の2・3歳戦のデータを取得してみよ(POG)

競馬ラボから自動で情報取得してみよ

競馬が趣味。
POG(ペーパーオーナーゲーム)は毎年の楽しみ。
過去の2・3歳戦のデータを取得して、ドラフトに役立ててみよ。
かつ、Python-Seleniumの勉強もしてみよ。
いつも見ている競馬ラボさん(https://www.keibalab.jp/)の過去レースDBから、2・3歳馬のレースの勝ち馬、厩舎、騎手等をSeleniumで自動取得する。

コードまとめ

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

YEAR = [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]

def scraping():
    options = Options()
    options.add_argument('--headless')
    d = webdriver.Chrome(executable_path='/mnt/c/chromedriver_win32/chromedriver.exe', options=options)
    d.implicitly_wait(20)
    pog_info = ['年 月日 グレード レース 場所 年齢 距離 馬名 騎手 厩舎 結果']
    for y in YEAR:
        d.get('https://www.keibalab.jp/db/race/grade.html?year=' + str(y))
        race_list = d.find_elements_by_xpath('//*[@id="mainWrap"]/div/div/div[3]/table/tbody/tr[*]')
        for r in race_list:
            if '2歳' in r.text or '3歳' in r.text:
                pog_info.append(str(y) + ' ' + r.text)
    d.quit()
    for p in pog_info:
        print(p)

if __name__ == '__main__':
    scraping()

実行結果

年 月日 グレード レース 場所 年齢 距離 馬名 騎手 厩舎 結果
2002 1月13日(日) (GⅢ) 京成杯 東京 3歳 芝2000m ローマンエンパイア 武幸四 古川平 結果
2002 1月13日(日) (GⅢ) 京成杯 東京 3歳 芝2000m ヤマニンセラフィム 蛯名正 浅見秀 結果
2002 1月14日(月) (GⅢ) 日刊スポシンザン記念 京都 3歳 芝1600m タニノギムレット 武豊 松田国 結果
2002 2月3日(日) (GⅢ) 共同通信杯 東京 3歳 芝1800m チアズシュタルク 藤田伸 山内研 結果
2002 2月10日(日) (GⅢ) きさらぎ賞 京都 3歳 芝1800m メジロマイヤー 飯田祐 田島良 結果
   ・
   ・
   ・

コード自体はかなり簡単で、結構有益な情報が取得できた。