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

如何用XPath获取class动态的div标签下的全部文本?

动态class的div文本获取解决方案

目标HTML结构:

<div class="o-text99">
"No "
"messages"
" found"
</div>

需要定位class以o-text开头(后缀数字动态变化)的div,并获取其下所有文本内容,原XPath无法得到预期结果。

原XPath的问题

你写的XPath //div[contains(@class,'o-text')]/self::div[contains(text(),'No')]/self::div[contains(text(),'messages')]/self::div[contains(text(),'found')] 逻辑错误:

  • text() 返回的是当前节点的所有子文本节点集合,contains(text(), 'xxx') 只会检查第一个文本节点是否匹配
  • 链式的self::div相当于多次过滤同一个节点,无法匹配包含多个分散文本节点的div

正确的XPath方案

1. 基础定位(仅匹配class前缀)

如果只需要匹配class以o-text开头的div,直接用:

//div[starts-with(@class, 'o-text')]

2. 精准定位(确保包含目标文本片段)

如果要避免误匹配其他o-text开头的div,可通过检查节点的整体文本内容(.代表当前节点的所有拼接文本)来过滤:

//div[starts-with(@class, 'o-text') and contains(., 'No ') and contains(., 'messages') and contains(., ' found')]

3. 获取文本内容

  • 获取所有子文本节点(返回列表):

    //div[starts-with(@class, 'o-text')]/text()
    

    结果会是三个独立的文本片段:"No "、"messages"、" found"

  • 获取拼接后的完整文本:

    string(//div[starts-with(@class, 'o-text')])
    

    结果会是保留原格式的拼接文本:"No ""messages"" found"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:12:05