无法使用 selenium python 获取多个跨度类文本

Posted

技术标签:

【中文标题】无法使用 selenium python 获取多个跨度类文本【英文标题】:Can't get multiple span class text with selenium python 【发布时间】:2022-01-15 02:38:43 【问题描述】:

我在尝试抓取 flashscore 比赛摘要时遇到错误。例子: flashscore

我想获得例如这些页面中的所有结果,但是执行 driver.find_element_by_class("h2h__result") 它只需要第一个结果。 (放在 obv 中) 如果我尝试做 driver.find_elements_by_class 我会出错,我不明白为什么。 代码示例:

driver.get("https://www.flashscore.com/match/Qs85KCdA/#h2h/overall")
time.sleep(2)

h2h = driver.find_elements_by_class_name("rows")


for x in h2h:
    p = driver.find_element_by_css_selector("span.h2h__regularTimeResult")
    print(p.text)

有人可以帮助我了解我在哪里做错了吗?非常感谢你们。

【问题讨论】:

【参考方案1】:

类名rows 的元素突出显示整个表格。使用类名h2h__row 以便所有行都聚焦并能够从该特定行中提取详细信息。

xpaths 下方尝试获取元素。

from selenium.webdriver.common.by import By

driver.get("https://www.flashscore.com/match/Qs85KCdA/#h2h/overall")

rows = driver.find_elements(By.XPATH,"//div[@class='h2h__row']")

for row in rows:
    results = row.find_element(By.XPATH,".//span[@class='h2h__regularTimeResult']") # Use a dot in the xpath to find elements with in an element
    print(results.text)

也可以使用下面的CSS_SELECTOR直接获取元素。

regularTimeResult = driver.find_elements(By.CSS_SELECTOR,"div.h2h__row span.h2h__regularTimeResult")

for item in regularTimeResult:
    print(item.text)

更新:

rows = driver.find_elements(By.XPATH,"//div[@class='h2h__row']")

for row in rows:
    results = row.find_element(By.XPATH,".//span[@class='h2h__regularTimeResult']") # Use a dot in the xpath to find elements with in an element
    if "0 : 0" not in results.text:
        print(results.text)

【讨论】:

感谢您提供完美的解决方案。如果我要从跨度文本中删除 0:0 分数怎么办?我已经尝试了一切,甚至 translate() 或 replace() 但没有任何效果。 @MartinCvetanoski - 已更新答案。只需添加if loop 即可过滤掉0 - 0。如果答案有帮助,请接受。单击可用于答案的正确标记选项。 非常感谢你,伙计。我会做的当然是你的最低限度。当我尝试做 print(len(results.text)) 时的最后一件事,它只给了我 5 个元素,而不是它应该做的 11 个。我应该在 for 循环中添加一个 append() 还是出了什么问题?很抱歉,我知道我用这些问题打扰了你。再次抱歉。 Length of results.text 表示 0 : 0 的长度是 5。我认为你应该在 for 循环之外做 rows 的长度。

以上是关于无法使用 selenium python 获取多个跨度类文本的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 在使用 Python 时无法单击“获取数据”按钮

解决python+selenium无法获取提示内容

Selenium + Python:无法获取href

Python & BeautifulSoup 4/Selenium - 无法从 kicksusa.com 获取数据?

无法获取元素 SELENIUM PYTHON

无法使用 Selenium 和 Chrome 获取元素文本