Python XPath 简介

2023-04-17 00:00:00 python xpath 简介

Python XPath 是一种用于定位和选择 XML 或 HTML 文档中特定节点的语言。XPath 使用路径表达式来选取节点或节点集,这些节点可以是元素、属性、文本或命名空间等。在 Python 中,可以使用 lxml 库来解析 XML 或 HTML 文档,并使用 XPath 进行定位和选择。
下面是一个简单的 Python XPath 示例,假设我们有一个 XML 文档如下:

<catalog>
  <book id="book1">
    <author>Author1</author>
    <title>Title1</title>
    <price>10.99</price>
  </book>
  <book id="book2">
    <author>Author2</author>
    <title>Title2</title>
    <price>15.99</price>
  </book>
</catalog>

我们可以使用如下 XPath 表达式来选取所有书籍的作者:

from lxml import etree
xml = '''
<catalog>
  <book id="book1">
    <author>Author1</author>
    <title>Title1</title>
    <price>10.99</price>
  </book>
  <book id="book2">
    <author>Author2</author>
    <title>Title2</title>
    <price>15.99</price>
  </book>
</catalog>
'''
tree = etree.fromstring(xml)
authors = tree.xpath("//book/author/text()")
print(authors)

输出结果为:

['Author1', 'Author2']

这里的 XPath 表达式是 //book/author/text(),表示选取所有 book 元素下的 author 元素的文本子节点。我们将 XML 文档解析成了一个元素树对象,然后使用 xpath 方法来执行 XPath 表达式。
如果要选取所有书籍的价格,可以使用如下 XPath 表达式:

prices = tree.xpath("//book/price/text()")
print(prices)

输出结果为:

['10.99', '15.99']

如果要选取 ID 为 book2 的书籍的作者和价格,可以使用如下 XPath 表达式:

author = tree.xpath("//book[@id='book2']/author/text()")
price = tree.xpath("//book[@id='book2']/price/text()")
print(author, price)

输出结果为:

['Author2'] ['15.99']

这里的 XPath 表达式是 //book[@id='book2']/author/text()//book[@id='book2']/price/text(),分别表示选取 ID 为 book2 的 book 元素下的 author 元素和 price 元素的文本子节点。
除了选取节点之外,XPath 还支持一些比较操作和逻辑操作。例如,可以使用 ><= 等符号比较节点或属性的值,或者使用 andornot 等关键字组合多个表达式。
总之,Python XPath 是一种十分方便的工具,可以帮助我们更轻松地解析和操作 XML 和 HTML 文档。

相关文章