【问题标题】:XPath for getting nodes from HTML fragment based on element text content基于元素文本内容从 HTML 片段中获取节点的 XPath
【发布时间】:2015-12-07 07:52:51
【问题描述】:

我需要一个用于以下 HTML 片段(DOM 结构)的 XPath 表达式

<div class="content">
 <div class="product-compare-row">
  <div class="spec-title half-size">Model</div>
 <div class="spec-values half-size">
  <span class="spec-value">kast</span>
 </div>
</div>

所以如果spec-title div 包含Model,我需要kast 值。

我尝试过//div[preceding-sibling::div[contains(.,"Model)")]],但这不起作用。

【问题讨论】:

  • 您的 XPath(几乎)没有任何问题,但正如所写,您的 XPath 和 XML 都会导致错误。底线:contains(.,"Model)") 必须是 contains(.,"Model"),您的 XML 缺少结束 &lt;/div&gt; 并在表达式末尾添加 /span/text()。见corrected XML and XPath in action at XPathTester.com here。 (PS:给出的答案同样正确,但反过来也有效)。

标签: html dom xpath


【解决方案1】:

您要查找的 XPath 是:

//div[contains(@class, "spec-title") and contains(text(), "Model")]/following-sibling::div/span/text()

这有点难以理解,但用简单的英语:

  1. 选择所有具有spec-title 类且文本包含“模型”的div 元素。
  2. 如果div 是div,则查找此div's 的任何。
  3. 遍历他们的任何一个span 的孩子并返回他们的文本。

【讨论】:

  • 嗨兰博,感谢您的回复。这完成了工作!非常感谢!!完美运行!
猜你喜欢
  • 2015-11-06
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2011-03-22
  • 2011-07-10
  • 2015-12-12
  • 2015-03-08
相关资源
最近更新 更多