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
查找所有的书
//book
查找第一本书:
//book[1]
查找倒数第一本书:
//book[last()]
查找倒数第二本书:
//book[last() - 1]
小技巧:在控制台里面加上$x(’ 路径表达式’),可以调试Xpath路径表达式是否正确
!
输入表达式成功后,可以看见下方出现了你想查询的倒数第二本书的信息,点击黑色小方块,跳转到查看器,可以看见自己的匹配到的元素信息
属性查找
表示查找属性category为cooking的内容

使用position位置定位
$x(’//book[position()=2]’)
表示定位books下的第二个节点


逻辑表达式定位
and ,or,=,!=,>,>=,<,<= 等逻辑表达式
AND
查找属性category="web"并且 属性cover=“paperback” 的book 节点

OR
查找属性category="web"或者属性cover=“paperback” 的book 节点
查找属性等于category="children"的book 节点
!=
查找属性等于category="children"的book 节点
not
查看属性category 不是children 的book 节点
通过属性的文本内容进行定位 text()
1.contains()方法模糊匹配
查看book下面title下文本内容包的节点
//book/title[contains(text(),‘Potter’)]
2. 使用属性值做精确匹配
查找book下year节点下文本内容为2005的内容
//book/year[(text()=2005)]
轴定位方式
1.同级元素
查找books1所有的同级元素都查找出来,“”表示所有
/bookstore/book[1]/following-sibling::2.父节点parent
查找books1所有的父元素都查找出来,“*”表示所有3.查看后代元素
意思是:查找book2的子辈注意
Xpath定位//和/的区别
//表示文档里的任何位置的节点
/表示文档里根下的那些节点
列如:
//a//b/@abc 指的是文档中所有a元素下,属性为abc 的后代b元素(包括子代元素)(多级)
//a/b/@abc 指的是文档中所有a元素下,属性为abc 的子代(一级)
/a/b/@abc 指的是文档中根元素为a元素的,属性为abc 的子代