xpath如何提取元素本身及其子元素之一?

时间:2019-07-16 10:08:01

标签: xpath

我正在使用python请求和xpath获取数据。

<div class="test">
    <p>pppp</p>
    aaa
    <em>bbb</em>
    ccc
    <span>span</span>
</div>

我想得到aaabbbccc。 我尝试//div/*[not(self::p) and not(self::span)]//text()排除pspan元素,但它只返回bbb

正确的路径是什么?

1 个答案:

答案 0 :(得分:0)

如果元素结构是完全可预测的,并且仅文本节点的内容有所不同,则可以使用//div/node()[not(self::p|self::span)]/descendant-or-self::text()。请注意,这将返回一系列文本节点,而不是单个字符串。这也可能会返回一些空白文本节点,您可能希望使用谓词[normalize-space(.)]来过滤掉这些文本节点。

另一种可能性是//text()[not(parent::p|parent::span)]