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

Selenium+Python无法定位含空格类名及索引报错问题求助

问题解答

1. 索引失效的原因

你遍历_3tbKJL元素列表时,循环变量(比如你代码里的i)已经是单个WebElement对象,而非列表或可迭代集合。WebElement不支持下标访问([0]),因此会抛出TypeError: 'WebElement' object is not subscriptable错误。

举个错误代码示例:

parent_elements = driver.find_elements(By.CLASS_NAME, "_3tbKJL")
for i in parent_elements:
    # 错误:i是单个WebElement,不能用i[0]
    price = i[0].find_element(...)

正确逻辑是:循环变量本身就是单个父元素,直接在它内部查找子元素即可,无需额外加索引。

2. 正确定位价格元素的方法

方法一:直接定位价格元素

注意类名包含空格时,By.CLASS_NAME无法识别多类名(空格代表多个CSS类),需用CSS选择器或XPath:

# CSS选择器(点号表示类,多个类直接拼接)
price_elements = driver.find_elements(By.CSS_SELECTOR, "._30jeq3._1_WHN1")

# 或XPath写法
price_elements = driver.find_elements(By.XPATH, "//*[@class='_30jeq3 _1_WHN1']")

方法二:从父元素内部定位

如果你已获取父元素列表,可遍历每个父元素,在其内部查找子价格元素:

parent_elements = driver.find_elements(By.CLASS_NAME, "_3tbKJL")
for parent in parent_elements:
    # 在父元素范围内查找价格子元素
    price = parent.find_element(By.CSS_SELECTOR, "._30jeq3._1_WHN1")
    print(price.text)

额外提示

若元素为动态加载,建议等待元素出现后再定位,避免NoSuchElementException:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待所有价格元素加载完成(最长等待10秒)
price_elements = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, "._30jeq3._1_WHN1"))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:48:23