为什么CONTAINS(TEXT(),&QOOT;STRING&QOOT;)不能在XPath中工作?

2022-07-15 00:00:00 xml xpath web-scraping screen-scraping html

我已经为下面的HTML代码编写了此表达式//*[contains(text(), "Brand:" )]

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
<div class="info-product mt-3">
  <h3>Informazioni prodotto</h3>


  Brand: <span class="brand_title font-weight-bold text-uppercase"><a href="https://mammapack.com/brand/ava">Ava</a></span><br> SKU: 8002910009960<br> Peso Lordo: 0.471 kg <br> Dimensioni: 44.00 × 145.00 × 153.00 mm<br>

  <p class="mt-2">
    AVA BUCATO A MANO E2 GR.380</p>
</div>

我编写的XPath不起作用我想选择包含文本的节点Brand:。有人能告诉我我的错误吗?


解决方案

您的XPath,

//*[contains(text(), "Brand:")]
将选择第一个文本节点子节点包含"Brand:"子字符串的所有元素。在XPath 2.0中,使用多个项目的序列作为第一个参数来调用contains()是错误的。

此XPath

//*[text()[contains(., "Brand:")]]

将选择字符串值包含"Brand:"子字符串的文本节点子级的所有元素。

另请参阅

  • XPath 1.0 vs 2.0+ different contains() behavior explanation
  • Testing text() nodes vs string values in XPath

相关文章