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

如何用XPath仅统计首个class=rating-container的div内指定span的数量

问题原因解释

你遇到的问题核心是XPath的节点筛选优先级规则导致的,//div[@class='rating-container'][1] 并不是你以为的「全局范围内第一个class为rating-container的div」,它的实际匹配逻辑是:

  • 首先递归查找文档内所有class为rating-container的div节点
  • 然后保留在各自父节点的子节点列表中,排名第一的符合条件的div

你给出的HTML结构中,除了最顶部的那个rating-container是其父div的第一个符合条件节点外,表格每一行td内的rating-container也都是各自父td下的第一个符合条件节点,所以这四个div都会被匹配到,统计的自然就是所有div下的span总数。

正确写法

你需要用括号把全局匹配div的表达式包裹起来,强制先完成全局查找再取第一个节点,写法如下:

count((//div[@class='rating-container'])[1]//span[@class='show-for-sr'])

这个表达式的执行逻辑是:

  1. 先匹配文档内所有class为rating-container的div节点,形成节点集合
  2. 取该集合的第一个元素,也就是全局第一个符合要求的div
  3. 统计该div内部所有class为show-for-sr的span数量,你的示例中返回结果为5,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:57:04