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

如何用XPath提取同名元素多个值?需获取最后两个dd标签的内容

XPath提取方案

核心需求

提取目标<dl>下最后两个<dd>元素的文本,处理后拼接为Talstrasse 2A 01816 Berggiesshübel。

实现方案

方案1:分两次提取(兼容所有XPath版本)

先基于类名定位目标<dl>(比绝对层级定位稳定性更高),再分别取最后两个<dd>:

  1. 提取街道信息(倒数第二个<dd>):
    //dl[contains(normalize-space(@class), "dl-horizontal event-detail-dl")]/dd[position() = last() - 1]
  2. 提取邮编地址(倒数第一个<dd>):
    //dl[contains(normalize-space(@class), "dl-horizontal event-detail-dl")]/dd[last()]
    拿到结果后手动处理文本:去掉街道末尾的逗号、清除两段文本前后的空白,再拼接即可得到目标结果。

方案2:单条XPath直接返回拼接结果(支持XPath 2.0及以上版本)

如果运行环境支持XPath 2.0,可以一步完成提取、清洗、拼接操作:
concat(normalize-space(translate(//dl[contains(normalize-space(@class), "dl-horizontal event-detail-dl")]/dd[last()-1], ',', '')), ' ', normalize-space(//dl[contains(normalize-space(@class), "dl-horizontal event-detail-dl")]/dd[last()]))
表达式逻辑说明:

  • 用translate方法删除街道文本末尾的逗号
  • 用normalize-space方法清除两段文本前后的换行、多余空格
  • 用concat方法拼接两段文本,中间补充空格分隔

原有自动生成XPath的问题

  • 写死了全量DOM层级,页面结构稍有变动就会失效
  • 固定取第6个<dd>,如果前面的<dt><dd>对数发生变化,下标就会偏移,用last()做相对定位兼容性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:09:03