【发布时间】:2021-01-30 21:40:18
【问题描述】:
假设我有以下简化的嵌套 HTML 列表:
<ol>
<li>Item 1</li>
<li>Item 2
<ul>
<li>Item 2 1</li>
</ul>
</li>
<li>Item 3</li>
</ol>
现在我想在迭代列表项时访问每个文本节点:
for li in xml.xpath(".//li"):
for t in li.xpath(".//text()"):
print(t)
但是,这会打印两次 Item 2 1,因为该文本节点是两个 li 节点的后代。因此,我只想选择其祖先 li 是当前/上下文列表项的那些文本节点,以避免在嵌套列表项中多选文本节点。类似的东西
li.xpath(".//text[ancestor::li[1] == .]")
但这是一个无效的表达式。
【问题讨论】:
标签: python xpath lxml xpath-1.0