【问题标题】:How to select specific tag's attribute value with xPath?如何使用 xPath 选择特定标签的属性值?
【发布时间】:2019-07-01 15:05:52
【问题描述】:

我需要从中获取文本, <option value="......" >.......,但第一个选项标签除外。

我的代码是:

"xPath":"descendant::div[contains(@class,'produit__select')]/descendant::select[@name='select0']/descendant::option[@disabled='disabled']/value"

我无法得到结果。有人可以帮我吗?

<div class="produit__select">
 <label for="select0">Parfum</label>
 <select name="select0" id="select0">
   <option disabled="disabled">Faites un choix</option>  
   <option value="835">Pommes de Nouvelle Aquitaine</option> 
   <option value="842">Pommes Nectarines Bananes</option>
   <option value="838">Pommes Pruneaux</option>
   <option value="839" selected="selected">Pommes Fraises</option>
   <option value="841">Pommes Cassis</option>
   <option value="840">Pommes Bananes Kiwi</option>
   <option value="836">Pommes Poires</option>
   <option value="837">Pommes Coings</option> 
 </select>
</div>

【问题讨论】:

  • 请把 XML 复制粘贴为文本,而不是图像。我们无法在 PNG 图像上尝试我们的解决方案。
  • 我已经完成了,请问您清楚了吗?
  • 非常感谢@choroba,您的代码很好,但我在网络抓取方面没有得到我想要的结果。

标签: html xml xpath


【解决方案1】:

您可以使用// 代替descendant::。此外,没有名为value 的元素。如果你对文本感兴趣,使用text()函数,如果你想跳过第一个孩子,确保孩子的position()大于1。

//div[contains(@class,'produit__select')]
/select[@name='select0']
/option[position()>1]/text()

【讨论】:

    【解决方案2】:

    这是跳过禁用选项的另一种选择。

    //div[@class='produit__select']/select[@name='select0']/option[not(contains(@disabled,'disabled'))]/text()
    

    演示:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多