有关于find_elements(按.CLASS_名称、)工作方式的问题



我有一些麻烦理解如何硒的find_elements()方法的工作原理。几乎每次我尝试使用它时,它似乎都返回一个具有单个值的列表,即仅该元素的第一次出现。现在我正试图刮一些赌博网站作为一个小的个人项目。最终目标是建立一个程序,将足球队的名字作为输入,并找出哪家博彩公司提供的赔率最高。我的程序成功到达了列出球队即将进行的比赛的页面,但随后我遇到了一个问题。下面是我的代码:

说这是我要抓取的网页:

链接到我正在尝试抓取的站点

我注意到所有匹配信息都在一个由class = 'event-row-container'可识别的元素下。网页上有多个元素包含这个类。然而:

matches = driver.find_elements(By.CLASS_NAME, "event-row-container")
for match in matches:
print(match)

只打印该元素出现一次。我做错了什么?

试试这个:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#Define web driver as a Chrome driver and navigate
driver = webdriver.Chrome()
driver.maximize_window()
url = 'https://superbet.ro/cautare?query=Steaua'
driver.get(url)
# Click on accept cookies
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, "onetrust-accept-btn-handler"))).click()
# Save all the events in a list
events = WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "event-row-container")))
# Then with that list I do whatever I want, in this example only showing the text
for event in events:
print(event.text)

你可以看到我使用的是presence_of_element_locatedpresence_of_all_elements_located,这是最好的库。

我不确定,但我会说find_elements将被弃用

相关内容

最新更新