ソースコード
#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