1.什么是XPath
XPath是一门XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历
-
解析XML的一种语言(HTML其实是XML的子级),广泛用于解析HTML数据
-
几乎所有语言都能使用XPath,比如Java和C语言
-
除了XPath还有其他手段用于XML解析,比如:BeautifulSoup、lxml、DOM、SAX、JSDOM、DOM4J、minxml等
2.XPath语法
三大类:
- 层级:/ 直接子级、// 跳级
- 属性:@属性访问
- 函数:contains()、text() 等
选取节点:
XPath 使用路径表达式来选取XML文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
表达式 | 描述 | 示例 | 结果 |
---|---|---|---|
nodename | 选取此节点的所有子节点 | bookestore | 选取bookstore下所有的子节点 |
/ | 如果放在最前面,代表从根节点选取。否则选择某节点下的某个节点 | /bookstore | 选取根元素下所有的bookstore节点 |
// | 从全局节点中选择节点,与位置无关 | //book | 从全局节点中找到所有的book节点 |
@ | 选取某个节点的属性 | //book[@price] | 选择所有拥有price属性的book节点 |
有时某个属性中包含了多个值,可以使用contains
函数:
//div[contains(@class,'job_detail')]
谓词:
谓词用来查找某个特定的节点或者包含某个指定值的节点,被嵌在方括号中。
以下是带有谓词的一些路径表达式,以及表达式的结果:
(下标是从1开始的)
路径表达式 | 描述 |
---|---|
/bookstore/book[1] | 选取bookstore下的第一个子元素 |
/bookstore/book[last()] | 选取bookstore下的最后一个元素 |
/bookstore/book[position() < 3] | 选取bookstore下前面两个子元素 |
//book[@price] | 选取拥有price属性的book元素 |
//book[@price=10] | 选取所有属性price等于10的book的元素 |
通配符(*)
通配符 | 描述 | 示例 | 结果 |
---|---|---|---|
* | 匹配任意节点 | /bookstore/* | 选取bookestore下的所有子元素 |
@* | 匹配节点中的任意属性 | //book[@*] | 选取所有带属性的book元素 |
选择多个路径
通过在路径表达式中使用|运算符,可以选取若干个路径:
//div[@class="list_item_top"] | //div[@class="list_item_bot"]