from lxml import etree
# XML文档内容
xml_data = '''
<root>
<element attribute="value1">Text 1</element>
<element attribute="value2">Text 2</element>
<element attribute="value3">Text 3</element>
</root>
'''
etree = etree.fromstring(xml_data)
etree = etree.HTML(html_data)
['Text 1']
etree.xpath('//element[@attribute="value1"]/text()')
etree.xpath('//element/text()')[0]
etree.xpath('./element/text()')[0]
etree.xpath('/root/element/text()')[0]
etree.xpath('/root/element[1]/text()') # 注意解析特殊:索引从1开始,不是0
etree.xpath('/root/element[position()=1]/text()')
etree.xpath('/root/element[position()=1]/..')[0].tag # 当前element 的父节点为'root'
# ************* 不能这么写,直接从值进行定位,eg://element[text()="Text 3"] *****************
etree.xpath('//element[text()="Text 3"]/..')[0].tag # 选择具有文本内容为 "Text 3" 的父节点
etree.xpath('/root/element[position()=1]/text()/..')[0].tag # 当前文本 的父节点为'element'
# 假设要获取所有文本,就不用多说了吧:
etree.xpath('//element/text()')
etree.xpath('./element/text()')
etree.xpath('/root/element/text()')
['Text 1', 'Text 2', 'Text 3']
通过Xpath解析尝试多种方法提取文本
于 2023-11-01 17:38:51 首次发布