python-3.x - 使用 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])
解决方案
您可以为您的元素列表尝试以下 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
希望对你有帮助!
推荐阅读
- python - 在python中为追加或列表获取不同的输出
- json - Flutter 使用 json 检索对象信息
- typescript - 如何在 Typescript 中引用接口的自身属性?
- android - 如何修改菜单下拉容器的背景
- python - 将包从 python 2 编辑到 3 时出现问题
- swift - 不在 View Hierarchy 中时重新加载 UITableView/(一般是控制器)
- python - 两个列表列表的所有组合
- .net - .NET SqlBulkCopy - 可以排除 Null 字段
- javascript - 按名称搜索目录中的文件(不知道扩展名)
- javascript - 在 useEffect 中使用 prop 函数返回:prop.function 不是函数