如何在 Python 中使用 XPath?
在 Python 中使用 XPath,可以通过 lxml 库来实现。lxml 是一个高效的库,提供了对 XML 和 HTML 文档的完整 XPath 支持。以下是如何使用 lxml 进行 XPath 查询的步骤:
lxml
在使用 lxml 之前,需要先安装它。你可以通过以下命令安装:
pip install lxml
使用 lxml 解析 XML 或 HTML 文档,并使用 XPath 来查询元素或节点。
from lxml import etree # 定义一个 XML 文本 xml = ''' <root> <element>Value 1</element> <element>Value 2</element> <child> <subchild>Subvalue</subchild> </child> </root> ''' # 解析 XML 文本 root = etree.fromstring(xml) # 使用 XPath 查询所有 <element> 标签 elements = root.xpath("//element") for elem in elements: print(elem.text) # 使用 XPath 查询 <subchild> 标签的文本 subchild_value = root.xpath("//subchild/text()") print(subchild_value)
from lxml import etree # 定义一个 HTML 文本 html = ''' <html> <body> <div>First div</div> <div>Second div</div> </body> </html> ''' # 使用 lxml 的 HTML 解析器 parser = etree.HTMLParser() tree = etree.fromstring(html, parser) # 使用 XPath 查询所有 <div> 标签 divs = tree.xpath("//div") for div in divs: print(div.text)
//tag
<tag>
/tag
@attribute
//div[@class='example']
class
example
<div>
text()
除了提取文本,还可以使用 XPath 获取元素的属性:
from lxml import etree # XML 文本 xml = ''' <root> <item id="1">Item 1</item> <item id="2">Item 2</item> </root> ''' # 解析 XML root = etree.fromstring(xml) # 获取所有 item 元素的 id 属性 ids = root.xpath("//item/@id") print(ids) # 输出: ['1', '2']
通过 lxml 库,你可以方便地在 Python 中解析 XML 或 HTML,并使用 XPath 进行复杂的查询。lxml 的 XPath 实现非常强大,适合处理需要复杂查询的 XML 或 HTML 文档。