xpath常用函数

阅读更多


/text()  结尾是取文本
/@href   结尾是取链接地址

[@href != "#"] 是对属性的限制
例如   xpath
//*[@id="title"]/@href      的节点是以下两个
北斗助力城市民生事业,“百城百联百用”行动卓有成效
变更管理在燃气行业的应用——以燃气厂站为例
xpath解析结果是 以下两个 
#
/article/detail?id=2520
明显 # 不是有效链接 那么 取属性不是# 的xpath就是
//*[@id="title"][@href!="#"]/@href
解析结果 过滤掉了 #的
/article/detail?id=2520



xpath 常用函数

注意:函数可以多个,多次的嵌套使用

1.
去除头尾空格

normalize-space() 
例子
normalize-space(//*[@id="6658"]/text())

2.
截取字符串

substring()
例子
substring(string,number,length)
参数string用于指定要截取的字符串;参数number用于指定开始位置;参数length用于指定截取字符串的长度
substring(abcdef,1,3)  截取结果  abc

3.
截取字符串

substring-before()
substring-before(str1,str2)函数用于返回字符串str1中位于字符串str2之前的部分。
例子
substring-before("2018abcd","a")  截取结果 2018

4.
截取字符串

substring-after()
substring-after(str1,str2)函数跟substring-before类似,substring-after0返回字符串str1中位于字符串str2之后的部分。
例子
substring-after("abdc.123",".")  截取结果 123

5.
替换

translate()
translate(str,str1,str2) 将str中的str1替换为str2
例子
//*[@id="6658"]/div[2]/div[2]/div[1]/ul/li[2] 取到的记过是  2018年8月8日
translate(//*[@id="6658"]/div[2]/div[2]/div[1]/ul/li[2],"年","-") 解析结果为 2018-8月8日
下面这个是多次嵌套使用 最后日替换为"" 时会有个空格 所以用了一次去空格函数 normalize-space()
normalize-space(translate(translate( translate(//*[@id="6658"]/div[2]/div[2]/div[1]/ul/li[2],"年","-"),"月","-"),"日","")) 解析结果为 2018-8-8

6.
拼接两个xpath内容 中间逗号隔开

concat()
例子
concat(//*[@id="6658"]/text(),//*[@id="6659"]/text())






你可能感兴趣的:(xpath)