You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium提取HTML元素文本报WebElement不可下标的解决方法

报错原因

代码触发报错存在两个核心问题:

  • 方法调用错误:find_element() 仅返回匹配到的第一个WebElement单实例,本身不支持下标索引访问,直接写[0]/[1]取值就会抛出TypeError: 'WebElement' object is not subscriptable。如果需要获取多个匹配的元素列表,必须使用带复数后缀的find_elements()方法。
  • CSS选择器书写错误:原选择器中将类名sc-7d450bff-9错误插入空格拆分为sc-7d450bff 9,而空格在CSS选择器中代表后代选择器语义,会直接导致元素匹配失败。另外代码中使用的sc-前缀类名是前端构建时生成的动态类名,后续版本迭代极易发生变动,定位稳定性很差。
修正代码

优先使用元素自带的固定业务属性data-change-key做定位,稳定性远高于动态类名,实现代码如下:

from selenium.webdriver.common.by import By

# 直接通过专属自定义属性定位主客队比分元素,无需依赖父容器或动态类名
home_score = driver.find_element(By.CSS_SELECTOR, 'div[data-change-key="homeScore.display"]').text
away_score = driver.find_element(By.CSS_SELECTOR, 'div[data-change-key="awayScore.display"]').text

如果需要通过父容器遍历子元素的方式实现,修正后的代码如下:

from selenium.webdriver.common.by import By

# 修正父容器选择器的类名错误,再调用find_elements获取子元素列表
parent_container = driver.find_element(By.CSS_SELECTOR, "div.sc-492bf320-0.sc-7d450bff-9.crIwBV.juiSXn")
score_elements = parent_container.find_elements(By.CSS_SELECTOR, "div.sc-18688171-0.fXAhuT.fBSHnS")
home_score = score_elements[0].text
away_score = score_elements[1].text

优先推荐第一种属性定位方案,不会因为前端样式类名更新导致定位逻辑失效。

内容的提问来源于stack exchange,提问作者PASCAL MAGONA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:18:14