我正在使用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()
排除p
和span
元素,但它只返回bbb
。
正确的路径是什么?
答案 0 :(得分:0)
如果元素结构是完全可预测的,并且仅文本节点的内容有所不同,则可以使用//div/node()[not(self::p|self::span)]/descendant-or-self::text()
。请注意,这将返回一系列文本节点,而不是单个字符串。这也可能会返回一些空白文本节点,您可能希望使用谓词[normalize-space(.)]
来过滤掉这些文本节点。
另一种可能性是//text()[not(parent::p|parent::span)]
。