Xpath笔记

//

所有子子孙孙

1
2
3
//div

所有div
1
2
3
//div//span

所有div下面的所有span,包含所有子,孙,孙孙span

/

所有的直接第一级子元素

1
2
3
4
//div/span

所有div下面的直接子span

[]

选某个元素的属性

1
2
3
4
 //div[@class="f6 text-gray mt-2"] 


选取所有class=f6 text-gray mt-2的div

*

任意单个元素

1
2
3
4
//div/a/*

所有div,直接所有子元素a(不包含孙),直接任意子元素(不包含孙)

text()

文本元素

1
2
3
//div/p[text()="pio"]

所有div,直接子元素p(不包含孙),p标签文本是pio
1
2
3
//div[@class='f6 text-gray mt-2']//span[text()="TypeScript"]

所有class是'f6 text-gray mt-2'的div,所有后代子子孙孙span,文本是TypeScript

contains(属性,”值”)

1
2
3
//div//p[contains(text(),"忘记密码")]

所有div 所有子孙p,文本是忘记密码

startwith(属性,”属性开头值”)

1
2
3
4
//div[starts-with(text(),'忘记密码')]

所有div文本是忘记密码开头

1
2
3
4
//div[@class="f6 text-gray mt-2"]//a[starts-with(@class,"d-inline-block")]

所有div,类名是f6 text-gray mt-2,所有子孙a,类名d-inline-block开头

/@href

选取href属性

1
/a/@href

and

属性多选

1
2
3
4
5
//div[starts-with(@class,"WB_text") and @nick-name='xxx微博' ]/a[@action-type="feed_list_url" and starts-with(@suda-uatrack,"key=tblog_card")]/@href

所有的class以WB_text开头 并且 nick-name是xxx微博的div
下面的所有直接子元素(不包含孙)a a的action-type是feed_list_url 并且suda-uatrack这个属性是key=tblog_card开头
的href属性

节点关系

1
2
3
4
5
6
7
8
9
10
11

父(Parent):每个元素以及属性都有一个父

子(Children):元素节点可有零个、一个或多个子

同胞(Sibling):拥有相同的父的节点

先辈(Ancestor):某节点的父、父的父

后代(Descendant):某个节点的子,子的子

##谓语

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
放在[]中的几种查找方式写法如下:

//ul/li[1] , 表示选择 ul多个li子元素中的第一个

//ul/li[last()], 表示选择ul子元素中的最后一个li元素

//ul/li[last()-1], 表示选择ul子元素中的倒数第二个li元素

//ul/li[position()<3],表示选取最前面2个属于ul元素的li子元素

//a[@href] ,表示选取只要含有href属性的a元素

//a[@href='http://www.cnblogs.com/jenniferhuang'] ,属性值完全匹配

//input[contains(@id,'quantityTextBox')], 当属性值部分匹配时,插入函数的写法