请问您能找到解决这个简单问题的方法吗?
<strong>text1</strong>: text2
我正在尝试抓取这个 html 部分,所以我需要分别获取 text1 和 text2。怎么做? 它应该是这样的:
x = tree.xpath('//strong[text()="text1"]/text()')
但是这段代码返回实际的“text1”,我也需要 text2..
最佳答案
需要获取strong
标签元素,然后使用element.tail
获取其后的文本。示例 -
In [12]: from lxml import html
In [13]: tree = html.fromstring("<strong>text1</strong>: text2 ")
In [14]: x = tree.xpath('//strong[text()="text1"]')
In [15]: for i in x:
....: print(i.tail)
....:
: text2
这也适用于 lxml.etree
,而不仅仅是 lxml.html
。示例 -
In [16]: from lxml import etree
In [18]: tree = etree.fromstring("<elem><strong>text1</strong>: text2</elem>")
In [19]: x = tree.xpath('//strong[text()="text1"]')
In [20]: for i in x:
....: print(i.tail)
....:
: text2
要将它们放在一起,您可以这样做 -
In [21]: x = tree.xpath('//strong[text()="text1"]')
In [23]: for i in x:
....: print('text :',i.text)
....: print('tail :',i.tail)
....:
text : text1
tail : : text2
关于Python Lxml 在 <strong></strong> 标签后查找文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32494661/