基本语法
xpath
xpath可以帮助我们从 elements 中定位数据
-
选择节点(标签)
/html/head/meta : 能够选中html下的head下的所有meta标签 -
// 能够从任意节点开始选择
//li 当前页面上的所有li标签
/html/head//link head下的所有的link标签 -
@符号的用途
选择具体某个元素
//div[@class=“feed”]/ul/li 选择class=“feed”的div下的ul下的li
a/@href 选择a的href 的值 -
获取文本
/a/text() 获取a下的文本
/a//text() 获取a下的所有的文本 -
点前
./a 当前节点下的a标签
/html 从根节点选取、或者是元素和元素间的过渡。
/html/head/title 绝对路径(一层层的查找)
/html//title / 相对于当前节点
//title // 从任意位置的节点选取,
//title/./../.. .当前节点 ..父节点
//head/meta/@http-equiv @ 提取标签属性值
//title/text() text() 提取开闭标签之间的文本内容
节点修饰语发
通过索引进行节点修饰(索引从1开始)
//body/div[3]/div/div[1]/div[position()>10]
//body/div[3]/div/div[1]/div[last()]
通过标签属性与属性值修饰节点
//div[@id="qiushi_tag_121536487"]
//div[@id]
通过子节点的值修饰当前节点
//span[i>2000]
通过部分包含修饰节点
//div[contains(@id,"qiushi_tag_")]
节点的通配使用 * 匹配所有节点
//*[contains(text(),"下一")]
索引 [] 从 1 开始
/bookstore/book[1] :选取属于 bookstore 子元素的第一个 book 元素。
选取到最后一个元素(相当于可以选取总共所有的元素)[last()]
/bookstore/book[last()]
选取到倒数第二个元素(就是最后一个元素减一) [last()-1]
/bookstore/book[last()-1]
选取在某一个范围区间的元素,(选择bookstore下面的book元素,从第二个开始选择) [position()>1]
/bookstore/book[position()>1]
//body/div[3]/div/div[1]/div[position()>10]
xpath语法的并用 | 或
path1|xpath2
练习:
1.选取 书店里 所有书的详细信息
/bookstore
2.选取 所有书的标题,所有书的分类签
/bookstore/book/title
3.选取 第一本书的定价
/bookstore/book[1]/price/text()
选取所有价格
/bookstore/book/price/text()
选取价格高于 35 的 price 节点
/bookstore/book[price>35.00]/price
4.选取 最后一本书的作者
/bookstore/book[last()]/author/text()
5.选取 倒数第二本书的 分类标签
/bookstore/book[last()-1]/@category
6.选取 包含cover属性的书的标题
/bookstore/book[@cover]/title/text()
7.选取 定价高于35的书的标题
/bookstore/book[price>35.00]/title
8.选取 定价在30到40之间的书的标题
/bookstore/book[price>35.00 and price<40.00]/title
/bookstore/book[price>35.00 and price<40.00]/title/text()
9.选取 作者多于一个的书的标题
/bookstore/book[count(author)>1]/title
10.选取 作者多于一个的书 只列出所有作者名
/bookstore/book[count(author)>1]/author/text()
11.选取 分类不是web 且价格低于40的书的分类属性值
/bookstore/book[@category!='web' and price<40.00]
12.选取 标题名称包含X的 所有书的定价值
/bookstore/book[title[contains(text(),'X')]]/price/text()