Я изменил ваш скрипт на приведенный ниже. Подход заключается в том, чтобы нажать каждую из соответствующих кнопок «Sha Tin» (см. range(1, len(shatin)-1)
) и собрать данные таблицы расы. Таблицы гонок добавляются в список под названием «гонки». Наконец, запишите каждую из таблиц расы на отдельные листы в Excel (обратите внимание, что вам больше не нужно BeautifulSoup
).
Добавьте их в свой список импорта:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
Тогда:
urlpage = 'https://racing.hkjc.com/racing/information/English/Racing/LocalResults.aspx?RaceDate=2019/07/14&Racecourse=ST&RaceNo=1'
# Setup selenium
driver = webdriver.Firefox(executable_path = 'geckodriver path')
# get web page
driver.get(urlpage)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"//table[@class='f_fs12 f_fr js_racecard']")))
shatin=driver.find_elements_by_xpath("//table[@class='f_fs12 f_fr js_racecard']/tbody/tr/td")
races=[]
for i in range(1, len(shatin)-1):
shatin = driver.find_elements_by_xpath("//table[@class='f_fs12 f_fr js_racecard']/tbody/tr/td")
#time.sleep(3)
#WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@class='performance']")))
shatin[i].click()
table = pd.read_html(driver.find_element_by_xpath("//div[@class='performance']").get_attribute('outerHTML'))[0]
races.append(table)
with pd.ExcelWriter('races.xlsx') as writer:
for i,race in enumerate(races):
race.to_excel(writer, sheet_name=f'game{i+1}', index=False)
writer.save()
driver.quit()
Выход: ![enter image description here](https://i.stack.imgur.com/6oLjo.png)