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 还支持一些比较操作和逻辑操作。例如,可以使用 >
、<
、=
等符号比较节点或属性的值,或者使用 and
、or
、not
等关键字组合多个表达式。
总之,Python XPath 是一种十分方便的工具,可以帮助我们更轻松地解析和操作 XML 和 HTML 文档。
相关文章