使用 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 获取元素列表的主要内容,如果未能解决你的问题,请参考以下文章