1、經常使用的路徑表達式:css
表達式 | 描述 | 實例 |
---|---|---|
nodename | 選取nodename節點的全部子節點 | //div |
/ | 從根節點選取 | /div |
// | 選取全部的節點,不考慮他們的位置 | //div |
. | 選取當前節點 | ./div |
.. | 選取當前節點的父節點 | .. |
@ | 選取屬性 | //@class |
舉例元素標籤爲artical標籤node
語法 | 說明 | |
---|---|---|
artical | 選取全部artical元素的子節點 | |
/artical | 選取根元素artical | |
./artical | 選取當前元素下的artical | |
../artical | 選取父元素下的artical | |
artical/a | 選取全部屬於artical的子元素a元素 | |
//div | 選取全部div 子元素,不管div在任何地方 | |
artical//div | 選取全部屬於artical的div 元素,不管div元素在artical的任何位置 | |
//@class | 選取全部名爲class 的屬性的 | |
a/@href | 選取a標籤的href屬性 | |
a/text() | 選取a標籤下的文本 | |
string(.) | 解析出當前節點下全部文字 | |
string(..) | 解析出父節點下全部文字 |
2、謂語 python
謂語被嵌在方括號內,用來查找某個特定的節點或包含某個制定的值的節點框架
語法 | 說明 |
---|---|
/artical/div[1] | 選取全部屬於artical 子元素的第一個div元素 |
/artical/div[last()] | 選取全部屬於artical子元素的最後一個div元素 |
/artical/div[last()-1] | 選取全部屬於artical子元素的倒數第2個div元素 |
/artical/div[position()<3] | 選取全部屬於artical子元素的前2個div元素 |
//div[@class] | 選取全部擁有屬性爲class的div節點 |
//div[@class="main"] | 選取全部div下class屬性爲main的div節點 |
//div[price>3.5] | 選取全部div下元素值price大於3.5的節點 |
3、通配符函數
Xpath經過通配符來選取未知的XML元素spa
表達式| 結果//* |選取全部元素//div/* |選取全部屬於div元素的全部子節點//div[@*] |選取全部帶屬性的元素文檔
4、取多個路徑get
使用「|」運算符能夠選取多個路徑input
表達式 | 結果 |
---|---|
//div | //table | 選取文檔中全部的div和table節點 |
//div/a | //div/p | 選取全部div元素的a和p 元素 |
artical/div/pl | //span | 選取全部div下的pl和文檔中全部span |
5、Xpath軸 string
軸能夠定義相對於當前節點的節點集
軸名稱 | 表達式 | 描述 |
---|---|---|
ancestor | ./ancestor::* | 選取當前節點的全部先輩節點(父、祖父) |
ancestor-or-self | ./ancestor-or-self::* | 選取當前節點的全部先輩節點以及節點自己 |
descendant | ./descendant::* | 返回當前節點的全部後代節點(子節點、孫節點) |
child | ./child::* | 返回當前節點的全部子節點 |
parent | ./parent::* | 選取當前節點的父節點 |
following | ./following::* | 選取文檔中當前節點結束標籤後的全部節點 |
following-sibling | ./following-sibling::* | 選取當前節點以後的兄弟節點 |
preceding | ./preceding::* | 選取文檔中當前節點開始標籤前的全部節點 |
preceding-sibling | ./preceding-sibling::* | 選取當前節點以前的兄弟節點 |
self | ./self::* | 選取當前節點 |
attribute | ./attribute::* | 選取當前節點的全部屬性 |
6、功能函數
使用功能函數可以更好的進行模糊搜索
函數 | 用法 | 解釋 |
---|---|---|
starts-with | //div[starts-with(@id,"ma")] | 選取id值以ma開頭的div節點 |
contains | //div[contains(@id,"ma")] | 選取全部id值包含ma的div節點 |
and | //div[contains(@id,"ma") and contains(@id,"in")] | 選取id值包含ma和in的div節點 |
text() | //div[contains(text(),"ma")] | 選取節點文本包含ma的div節點 |
語法 | 說明 |
---|---|
* | 選擇全部節點 |
#container | 選擇id爲container的節點 |
.container | 選擇全部class包含container的節點 |
div,p | 選擇全部 div 元素和全部 p 元素 |
li a | 選取全部li 下全部a節點 |
ul + p | 選取ul後面的第一個p元素 |
div#container > ul | 選取id爲container的div的第一個ul子元素 |
ul ~p | 選取與ul相鄰的全部p元素 |
a[title] | 選取全部有title屬性的a元素 |
a[href="http://baidu.com"] | 選取全部href屬性爲http://baidu.com的a元素 |
a[href*="baidu"] | 選取全部href屬性值中包含baidu的a元素 |
a[href^="http"] | 選取全部href屬性值中以http開頭的a元素 |
a[href$=".jpg"] | 選取全部href屬性值中以.jpg結尾的a元素 |
input[type=radio]:checked | 選擇選中的radio的元素 |
div:not(#container) | 選取全部id爲非container 的div屬性 |
li:nth-child(3) | 選取第三個li元素 |
li:nth-child(2n) | 選取第偶數個li元素 |
a::attr(href) | 選取a標籤的href屬性 |
a::text | 選取a標籤下的文本 |