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

时间:2014-09-16 19:19:08

标签: python html xpath

我正在尝试从以下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 个答案:

答案 0 :(得分: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>