Xpath基础
xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历。
选取节点
首先明确一点,XPath是基于文档树来查找元素的,其根是document
元素名
:选取所有的指定元素节点,比如//div
,选取所有的div
标签/
:选取当前节点的直接的指定子节点,比如/html
,选取document
的html
子节点//
:选取当前节点下所有的指定节点,如//div//a
,选取所有的div
下所有的a
标签@
:选取所有的指定属性节点(返回的是属性值,而非元素),如//@charset
,选取所有的charset
属性text()
:选取当前节点里的文本内容.
:选取当前节点
谓词
使用中括号[]
可以在选取的节点里加一些条件,从而选出满足条件的节点
[n]
:选取作为第n个孩子的节点,比如://body/div[1]
选取body
下的第一个div
子节点,注意://div[1]
表示选取所有div
里作为第1个孩子的div
,所有会有很多个,要谨慎与//
搭配,下面几个选位置的同理[last()]
:选取作为最后一个孩子的节点,比如//body/div[last()]
[position()<n]
:选取作为小于n的孩子的节点,比如//body/div[position()<3]
,表示选择body
下前两个div
子节点[@属性]
:选取包含指定属性的节点,常与选取属性节点搭配,如//div[@class]
,表示选取所有div
里,包含class
属性的节点[@属性=x]
:选取指定属性值为x的节点,如//div[@id=xyz]
,表示选取所有div
里id=xyz
的节点[contains(@属性,x)]
:选取指定属性值包括x的节点,如//div[contains(@class,'x')]
选取div
中class属性值里包含x的节点
通配符
*
,表示通配符,即所有名字匹配,如//div/*
,表示div
下所有的子节点,再如//div[@*]
,表示拥有任意属性的div
运算符
常用如下
|(并) or and + - * div(除法) =(等于) != < <= > >= mod(求余)
比如:
//a | //span (所有的a标签和span标签)
//div[@id=a and @class=b] (id=a并且class=b的div)