Xpath教程
前言
XPath 是一门在 XML 文档中查找信息的语言。
# 一、Xpath是什么?
XPath 使用路径表达式在 XML 文档中进行导航
XPath 包含一个标准函数库
XPath 是 XSLT 中的主要元素
XPath 是一个 W3C 标准
二、使用步骤
1.下载Xpath库
代码如下(示例):
pip install lxml
2.导入Xpath库
代码如下(示例):
from lxml import etree
3.Xpath节点
<bookstore>
<book>
<title lang="eng">Harry</title>
<price>29</price>
</book>
<book>
<title lang="kmg">Learning</title>
<price>39.95</price>
</book>
</bookstore>
节点关系:
父:每个元素以及属性都有一个父
在上边的例子中,bookstore是book的父
子:元素节点可有零个、一个或多个子。
book是bookstore的子
title,price是book的子
同胞:拥有相同的父的节点
title,price是同胞
先辈:某节点的父、父的父,等等。
bookstore是title,price的先辈
后代:某个节点的子,子的子,等等。
title,price是bookstore的后代
4.Xpath语法
nodename | 选取此节点的所有子节点。 |
---|---|
/ | 从根节点选取(取子节点)。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(取子孙节点)。 |
. | 选取当前节点。 |
. . | 选取当前节点的父节点。 |
– | – |
@ | 选取属性。 |
路径表达式
bookstore | 选取 bookstore 元素的所有子节点。 |
---|---|
/bookstore | 选取根元素 bookstore。 |
bookstore/book | 选取属于 bookstore 的子元素的所有 book 元素。 |
//book | 选取所有 book 子元素,而不管它们在文档中的位置。 |
bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 |
//@lang | 选取名为 lang 的所有属性。 |
tree = etree.XML(htm)
child_tree = tree.xpath("/bookstore/book/title[@*]/text()")
print(child_tree)
输出
['Harry', 'Learning']
输入
child_tree = tree.xpath("/bookstore/book[1]/title/text()")
print(child_tree)
输出
`['Harry']