Python lxml 无法获取所有文本

Python lxml cannot get all text

我正在使用 Python lxml 库来解析 HTML。 我有叶点,例如 <a> 并想获取其父节点的文本。 我尝试了两种方式:

  1. .xpath('::parent*'),
  2. .getparent().text.
from lxml.etree import HTML
text = '<p>FIRST PART<a href="THE LINK" target="_blank">LINK TEXT</a>SECOND PART</p>'

parsed = HTML(text)
parsed.xpath('//a')[0].getparent().text
parsed.xpath('//a/parent::*')[0].text

我使用任何一种方法都得到了 FIRST PART,但是我怎样才能得到 SECOND PART

您可以使用元素的 .itertext() 方法:

from lxml.etree import HTML

text = '<p>FIRST PART<a href="THE LINK" target="_blank">LINK TEXT</a>SECOND PART</p>'
parsed = HTML(text)

parent = parsed.xpath('//a/parent::*')[0]
text = list(parent.itertext())
print(text[0])
print(text[-1])

打印:

FIRST PART
SECOND PART