実現したいこと
いつもお世話になっております。
画像の赤枠で囲ったclass属性値である「Type Type04」を抽出したいのですが、うまくできません。
試したコード
url = 'https://race.netkeiba.com/race/newspaper.html?race_id=202305020504&rf=shutuba_submenu' browser.implicitly_wait(3) browser.get(url) dataindex_list = ["//*[@data-index='{}']".format(i) \ for i in range(len(browser.find_elements(By.CSS_SELECTOR, "dl.HorseList")))]#各レースにおける頭数 list_1 = [] list_2 = [] list_3 = [] list_4 = [] for dataindex in dataindex_list: #horse_idを抽出 elem_urls = [] elem = browser.find_element(By.XPATH, dataindex) elems = elem.find_elements(By.CLASS_NAME, 'Horse02') for elem in elems: elem_urls.append(elem.find_element(By.TAG_NAME, 'a').get_attribute('href')) horse_id = [] for elem_url in elem_urls: elem_url = re.findall(r'\d+', elem_url) horse_id.append(elem_url[0]) elem = browser.find_element(By.XPATH, dataindex) horse_id = horse_id * len(elem.find_elements(By.CLASS_NAME, 'Data01')) #前走の数だけhorse_idを取得 list_1.extend(horse_id) #馬が走ったrace_idを抽出 elem = browser.find_element(By.XPATH, dataindex) elems = elem.find_elements(By.CSS_SELECTOR, "span.RaceName") elem_urls = [] for elem in elems: elem_urls.append(elem.find_element(By.TAG_NAME, 'a').get_attribute('href')) race_id_list = [] for elem_url in elem_urls: elem_url = re.findall(r'\d+', elem_url) race_id_list.append(elem_url[0]) list_2.extend(race_id_list) #前半3Fタイムを抽出 elem = browser.find_element(By.XPATH, dataindex) elems = elem.find_elements(By.CSS_SELECTOR, "span.Data19") row = [] for elem in elems: text = elem.text text = re.findall(r'\d+\.\d+', text) text = "".join(text) row.append(text) list_3.extend(row) #脚質をスクリーニング elem = browser.find_element(By.XPATH, dataindex) elems = elem.find_elements(By.CSS_SELECTOR, '.Horse06.fc') div_class = [] for elem in elems: div_class = elem.find_element(By.CSS_SELECTOR, 'div.Type').get_attribute('class') div_class = div_class[-1] #Type Type01だったら1のみ抽出 list_4.extend(div_class) list_4 = [list_4[0]] * len(list_1) df = pd.DataFrame() df['horse_id'] = list_1 df['race_id'] = list_2 df['前半'] = list_3 df['脚質'] = list_4
上のコードで試しました。しかし、horse_id毎に1~4の脚質にしたいのですが、脚質がすべて同じになってしまいます(画像参照)。
htmlについて
<dl class="HorseList" data-index="0" id="past_tr_8"> <dt class="Horse_Info orderfix" style="width: 179.52px;"> <dl class="fc"> <dt class="Horse06 fc"> <div class="Type Type01"> ::after </div>htmlについては上のような感じですhttps://race.netkeiba.com/race/newspaper.html?race_id=202305020412 の左側にある馬名欄にある◀印のものを抽出したいです。
dl classのdata-indexは馬名毎に番号が変わり、div classのTypeは◀の位置によってType01~04が付与させています。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。