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

如何使用Python Selenium获取已定位span元素前序div的innerText

结论

该需求完全可以直接通过Selenium实现,无需借助BeautifulSoup。你之前调用parent相关方法未生效,是因为parent方法定位的是当前元素的父级节点,而你要找的div是span的前置同级节点,不属于父级范畴。

具体实现方法

你已经掌握了span元素的定位逻辑,有两种成熟写法可以拿到目标内容:

  • 方案1:单XPath一步定位
    利用XPath内置的preceding-sibling轴(专门用于查找当前节点之前的同级节点),可以直接写出定位表达式,一步拿到目标div:
    from selenium.webdriver.common.by import By
    
    # 直接匹配目标div
    target_div = driver.find_element(
        By.XPATH, 
        '//*[text()="Frequency:"]/preceding-sibling::div[1]'
    )
    result = target_div.text  # 取值为"100.00"
    

    注意:表达式末尾的[1]表示取离当前span最近的1个前置同级div,避免页面存在其他前置同级div时匹配错误。

  • 方案2:基于已定位的span元素做相对查找
    如果你已经提前将span元素存储为变量,可以基于该元素做相对定位,无需重新全页扫描:
    # 你之前已经定位到的span元素
    span_ele = driver.find_element(By.XPATH, '//*[text()="Frequency:"]')
    # 从span元素出发查找最近的前置同级div
    target_div = span_ele.find_element(By.XPATH, './preceding-sibling::div[1]')
    result = target_div.text
    
注意事项
  • 不要混淆节点关系:当前span的父节点是外层class为value的div,不是你要找的浮动div,因此所有查找父节点的方法都无法拿到目标结果
  • 如果前置同级节点的标签不固定,可以将表达式里的div替换为*,即可匹配前一个任意标签的同级节点
  • 不要省略[1]索引:不加索引时会匹配当前节点前所有符合标签规则的同级节点,大概率会抛出多元素匹配的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:45:41