使用 Selenium 获取元素列表

Getting a list of elements by using Selenium

我正在尝试获取博彩公司投注页面上突出显示的不同体育项目,以便稍后提取不同的赔率并将它们与其他博彩公司的页面进行比较。 检查结果如图所示。 我试过的代码如下:

sport_list = driver.find_elements(By.CLASS_NAME, "filters__content")

sport_list的运动:

打印(sport.text)

不幸的是 sport_list 仅由一个元素组成,为什么我希望它具有与检查部分中可见的运动项目数量相同的元素数量。

它只循环 1 次并且 returns 以下内容:“ Soccer\nTennis\nBasketball\nAmericanFootball ...”

谁能帮我找出问题所在?

提前致谢。

布里厄

尝试

sport_list = driver.find_elements(BY.XPATH, "//div[contains(@class, 'filters__content')]//li")

会发生什么?

因为您正在选择包含列表的 <div>,所以您得到的结果集只有一个元素 (<div>)。

driver.find_elements(By.CLASS_NAME, "filters__content")

如何修复?

选择 <div> 中的 <li> 并获取其文本使用 xpath 或如下例所示 css selectors.

for e in driver.find_elements(By.CSS_SELECTOR,'.filters__content li'):
    print(e.text)

输出

Football
Tennis
Basketball
Football Américain
Hockey sur glace
Esports
Volleyball
Handball
Boxe
Rugby
Snooker
Fléchettes
Cyclisme
Waterpolo
MMA
Stock Car Racing