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

如何用Selenium Python提取网页中的“Glenvale”文本?

解决方法

方法1:基于元素文本拆分提取

先定位到包含完整地址的元素(比如页面中显示地址的<p>标签),再通过字符串拆分获取"Glenvale":

# 定位地址元素(根据页面实际class调整,示例为页面常见的地址类)
address_element = driver.find_element(By.XPATH, '//p[contains(@class, "css-1r0si1e")]')
full_address = address_element.text
# 按地址格式拆分:"街道, 郊区 州 邮编",取逗号后、州名前的部分
suburb = full_address.split(', ')[1].split(' ')[0]
print(suburb)  # 输出Glenvale

方法2:用JS执行XPath字符串函数直接提取

通过JavaScript执行XPath的字符串处理逻辑,绕开元素顺序依赖直接提取目标文本:

suburb = driver.execute_script("""
    return document.evaluate(
        'substring-before(substring-after(//p[contains(text(), "QLD")]/text(), ", "), " QLD")',
        document,
        null,
        XPathResult.STRING_TYPE,
        null
    ).stringValue;
""")
print(suburb)

方法3:定位语义化元数据节点

如果页面包含schema.org规范的元数据标签,可直接定位标注郊区的节点:

suburb_element = driver.find_element(By.XPATH, '//span[@itemprop="addressLocality"]')
suburb = suburb_element.text
print(suburb)

原XPath失败的原因

你之前用的//*[@id="__next"]/div/div[2]/div/div[4]/div/div/div[8]/div/div/p/text()[6]存在两个核心问题:

  1. 强依赖绝对路径与节点顺序:网页结构只要微调(比如新增/删除模块),路径就会直接失效;
  2. Selenium不支持直接获取文本节点:text()[6]选取的是第6个文本节点,但find_element仅能返回WebElement对象,无法直接操作文本节点,调用.text会触发异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:09:58