python Xpath 定位总结

参考文档:
https://www.runoob.com/xpath/xpath-syntax.html
https://www.jianshu.com/p/69052fa15013

1.什么是Xpath

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

2.Xath 的专业术语

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

3.xpath的定位

1.练习链接:
https://www.w3school.com.cn/example/xmle/books.xml
python Xpath 定位总结
查找所有的书
//book
查找第一本书:
//book[1]
查找倒数第一本书:
//book[last()]
查找倒数第二本书:
//book[last() - 1]

小技巧:在控制台里面加上$x(’ 路径表达式’),可以调试Xpath路径表达式是否正确

!python Xpath 定位总结
输入表达式成功后,可以看见下方出现了你想查询的倒数第二本书的信息,点击黑色小方块,跳转到查看器,可以看见自己的匹配到的元素信息
python Xpath 定位总结属性查找
表示查找属性category为cooking的内容
python Xpath 定位总结
使用position位置定位
$x(’//book[position()=2]’)
表示定位books下的第二个节点
python Xpath 定位总结
python Xpath 定位总结
逻辑表达式定位
and ,or,=,!=,>,>=,<,<= 等逻辑表达式
AND
查找属性category="web"并且 属性cover=“paperback” 的book 节点
python Xpath 定位总结
OR
查找属性category="web"或者属性cover=“paperback” 的book 节点
python Xpath 定位总结

查找属性等于category="children"的book 节点
python Xpath 定位总结
!=
查找属性等于category="children"的book 节点
python Xpath 定位总结
not
查看属性category 不是children 的book 节点
python Xpath 定位总结

通过属性的文本内容进行定位 text()
1.contains()方法模糊匹配
查看book下面title下文本内容包的节点
//book/title[contains(text(),‘Potter’)]
python Xpath 定位总结python Xpath 定位总结
2. 使用属性值做精确匹配
查找book下year节点下文本内容为2005的内容
//book/year[(text()=2005)]python Xpath 定位总结python Xpath 定位总结
轴定位方式

python Xpath 定位总结1.同级元素
查找books1所有的同级元素都查找出来,“”表示所有
/bookstore/book[1]/following-sibling::

python Xpath 定位总结
python Xpath 定位总结2.父节点parent
查找books1所有的父元素都查找出来,“*”表示所有
python Xpath 定位总结
python Xpath 定位总结3.查看后代元素
意思是:查找book2的子辈
python Xpath 定位总结
python Xpath 定位总结注意
Xpath定位//和/的区别
//表示文档里的任何位置的节点
/表示文档里根下的那些节点
列如:
//a//b/@abc 指的是文档中所有a元素下,属性为abc 的后代b元素(包括子代元素)(多级)
//a/b/@abc 指的是文档中所有a元素下,属性为abc 的子代(一级)
/a/b/@abc 指的是文档中根元素为a元素的,属性为abc 的子代