首页 文章

xpath表达式仅获取动态内容的节点的文本内容

提问于
浏览
1

我试图从下面的HTML代码中捕获 <div class="num"> 没有子元素的内容:

<div class="num">
   <del>14,490</del>
   13,490
</div>

所以我期待 13,490 作为结果 .

我使用以下xpath表达式:

//div[@class="num"]/node()[not(self::del)]

这个例子很好用,但问题是div的内容可能会有所不同,有时候它不包含子元素 .

我正在使用Python并且可以在编码级别上处理这个问题,但我很好奇这是否可以仅通过xpath完成 .

1 回答

  • 2

    你可以得到 text()

    //div[@class="num"]/text()
    

    演示(使用xmllint):

    $ xmllint index.html --xpath '//div[@class="num"]/node()[not(self::del)]'
    13,490
    $ xmllint index.html --xpath '//div[@class="num"]/text()'
    13,490
    

    如果没有 del 标签,这也可以使用:

    <div class="num">
       13,490
    </div>
    

相关问题