首页 > 解决方案 > 使用 Selenium 抓取 Web 体育赔率

问题描述

我开始熟悉网络抓取并开始从事个人项目以自动投注某些网站。我的问题是在某些情况下页面使用 JavaScript 和其他复杂代码,所以我没有得到任何结果。我致力于的网站是“Intralot.it”。我用 Chrome 打开页面,然后寻找我感兴趣的“类” (参见 Chrome 检查器)。最后,我尝试使用 Selenium 获取数据,但几乎总是什么都得不到(空列表)。只是有时,莫名其妙地,列表包含数据。我希望有人帮助我了解发生了什么以及为什么我错了。下面是我的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By


link = 'https://www.intralot.it/scommesse/ma/calcio/premier_league/ref?code=1_86#989_9497_0'

driver = webdriver.Chrome()
driver.get(link)

Teams = driver.find_elements(By.CLASS_NAME, 'evento')
Odds  = driver.find_elements(By.XPATH, '//td[class = "quota group_1 ui- 
selectee"]//text()')   

for x in range (0,len(Teams)): print(Teams[x].text)
for y in range (0,len(Odds)): print(Odds[y])

标签: python-3.xseleniumweb-scraping

解决方案


您可以为您的元素列表尝试以下 CSS 选择器:

from selenium.webdriver.support import ui
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


Teams = ui.WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "a.evento")))
Odds = ui.WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "tr > td:nth-child(2)")))

for x,y in zip(Teams, Odds):

    print x.text, y.text

希望对你有帮助!


推荐阅读