Python lxml 无法获取所有文本
Python lxml cannot get all text
我正在使用 Python lxml
库来解析 HTML。
我有叶点,例如 <a>
并想获取其父节点的文本。
我尝试了两种方式:
.xpath('::parent*')
,
.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
我正在使用 Python lxml
库来解析 HTML。
我有叶点,例如 <a>
并想获取其父节点的文本。
我尝试了两种方式:
.xpath('::parent*')
,.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