xpath 轴 运算符
Table of Contents
-
参考:
https://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564330.html
http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
Xpath轴
- child 选取当前节点的所有子元素
- parent 选取当前节点的父节点
- descendant 选取当前节点的所有后代元素(子、孙等)
- ancestor 选取当前节点的所有先辈(父、祖父等)
- descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身
- ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
- preceding-sibling 选取当前节点之前的所有同级节点
- following-sibling 选取当前节点之后的所有同级节点
- preceding 选取文档中当前节点的开始标签之前的所有节点
- following 选取文档中当前节点的结束标签之后的所有节点
- self 选取当前节点
- attribute 选取当前节点的所有属性
- namespace 选取当前节点的所有命名空间节点
/AAA/XXX/preceding-sibling::*
/AAA/XXX节点的所有之前同级节点
谓语
- last() 选取最后一个元素
/bookstore/book[last()]
- position()<3 选取最前面的两个属于 bookstore 元素的子元素的 book 元素
/bookstore/book[position()<3]
- price>35.00 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]
运算符
https://www.w3school.com.cn/xpath/xpath_operators.asp
XPath、XQuery 以及 XSLT 函数
https://www.w3school.com.cn/xpath/xpath_functions.asp
- normalize-space 删除指定字符串的开头和结尾的空白,并把内部的所有空白序列替换为一个,然后返回结果。如果没有 string 参数,则处理当前节点。
一些示例
# 根据text获取指定的节点,对不需要的节点进行排除。
xpath('//span[@class="title-name"][contains(text(),"出品") and not (contains(text(),"联合出品"))]/ancestor::dl/dd//div[@class="p-item"][position()<4]//p/text()')
# 合并两个节点的值 (115.2,万 >>> 115.2万)
xpath('concat(//p[contains(text(),"话题讨论量")]/following-sibling::p//span[1]/text(),//p[contains(text(),"话题讨论量")]/following-sibling::p//span[2]/text())')
#猫眼历史最高热度值获取
xpath('//*[@class="tv-baseinfo"]//span[contains(text(),"热度值")]/ancestor::a//p[contains(text(),"历史最高")]/following-sibling::p/span/text()')
# 根据class属性含有的值进行查找
xpath('//div[contains(@class,"movie-item-title")]/a/text()')
# 去除空格 换行符
xpath('normalize-space(//div/a/text())')