Python プログラミング 競馬

netkeibaで日付指定のレース一覧をPythonで取得する

ソースコード

#Seleniumベースの、netkeiba 【動的】サイト スクレイピングライブラリ
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time
import pandas as pd
from bs4 import BeautifulSoup
import re


class lib_dynamic_netkeiba:
    #コンストラクタ 現在のところ処理無し
    def __init__(self):
        #インスタンス化とともに最新のChromeドライバインストール
        options = Options()
        # ヘッドレスモードで実行する場合
        # options.add_argument("--headless")
        self.chrome = webdriver.Chrome(ChromeDriverManager().install(), options=options)


    def get_raceid_ofdate(self, racelisturl: str) -> list:

        """
        racid一覧取得処理
        日付を指定して、中央競馬全場のnetkeiba raceidを取得する。

        Parameters
        ----------
        seleshutuurl: str
            日付込みのレース情報url
        login_info: dict

        Returns
        -------
        netkeibaのraceidのリスト
        """
        self.chrome.get(racelisturl)
        # コンテンツが描画されるまで待機
        time.sleep(2)

        ret_raceid_list = []
        # 出馬表テーブル内容取得
        race_li = self.chrome.find_elements_by_class_name("RaceList_DataItem")
        print(type(race_li))
        for li in race_li:
            print(type(li))
            html = li.get_attribute('outerHTML')
            soup = BeautifulSoup(html, 'html.parser')
            link = soup.find('a')
            lint_txt = link.get('href')
            print(link.get('href'))
            # 正規表現で前後文字列をとばして、raceidの数字だけを取得
            lint_txt = re.sub(r".*race_id=", "", lint_txt)
            lint_txt = re.sub(r"&rf.*", "", lint_txt)
            ret_raceid_list.append(lint_txt)

        return ret_raceid_list

-Python, プログラミング, 競馬
-,