使用 Selenium 获取元素列表

Posted

技术标签:

【中文标题】使用 Selenium 获取元素列表【英文标题】:Getting a list of elements by using Selenium 【发布时间】:2022-01-18 17:55:39 【问题描述】:

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

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

sport_list 中的运动:

打印(运动.文本)

不幸的是,sport_list 仅由一个元素组成,因此我希望它的元素数量与检查部分中可见的运动数量相同。

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

有人可以帮我找出问题所在吗?

提前致谢。

布里厄克

【问题讨论】:

【参考方案1】:

会发生什么?

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

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

如何解决?

<div> 中选择<li>s 并获取其文本使用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

【讨论】:

感谢您的帮助。问题解决了:)【参考方案2】:

试试

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

【讨论】:

谢谢。它有效:)

以上是关于使用 Selenium 获取元素列表的主要内容,如果未能解决你的问题,请参考以下文章

获取与 DOM 元素关联的事件列表

如何仅在python selenium中获取第一层子元素

selenium 获取元素方法-注解

Selenium:使用 Python 获取元素的坐标或尺寸

请教Python+selenium如何获取元素属性值问题

有啥方法可以通过 selenium 获取元素的类名