有没有办法匹配第一个没有任何文本的元素?

时间:2019-08-17 21:51:46

标签: python xpath lxml

例如,我只想从以下元素中提取em元素,

<p><em>xxx</em>yyy<p>

但不是下一个中的em

<p>some extra text<em>xxx</em>yyy<p>

是否可以使用xpath做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用preceding-sibling支票,如下所示:

print(tree.xpath("//em[not(preceding-sibling::text())]/text()"))

使用此HTML:

<p><em>xxx</em>yyy</p>

<p>some extra text<em>xxx</em>yyy</p>

<p><em>yes</em>anotherText</p><p>test<em>no</em></p><p><em>yes2</em>Text</p>

输出:

['xxx', 'yes', 'yes2']