XPATH選擇器介紹

2021-09-08 16:00:03 字數 2117 閱讀 7464

xpath全文叫 xml path language  (xml路徑語言)

從xpath的視角來看,xml 或html文件就是檔案系統結構,元素節點可以看做其中某乙個檔案

在html文件中,以html標籤作為根節點,整個文件的形式可以看成是乙個樹形結構

xpath比css多一點功能,比如前向兄弟選擇器,父元素選擇器

我們在後期學習移動應用自動化的時候,它是不支援css的,只支援xpath,所以你現在不學,後面還要學。

以/開始,逐個增加節點名稱用/分割

舉例:/html/body/div/p

表示html文件中的p節點,xpath路徑就表示了元素的位置

特點:不能跨級,類似css中的直接子元素選擇器 >

寫法很簡單:就是把再加乙個/,變成兩個//

舉例://footer//p

表示footer元素中所有的後代p型別元素

使用相對定位法一定要用//開頭

特點:類似css的後代元素選擇器,不要求每層元素都寫

相對定位法可以和絕對定位法結合起來使用

如 //footer/div/p

表示html文件中footer元素下的div元素下的p元素

*表示所有節點,同css

屬性用包裹,屬性名加@符號,屬性值需要用引號包裹

舉例://*[@style]  表示選擇html文件下所有包含style屬性的元素

//p[@spec='len2'] 選擇所有具有spec 值為 len2 的元素

補充學習css子元素選擇器

:nth-child(n)

:nth-of-type(n)

xpath中選擇第幾個子元素方式

通過下標方式獲取:

//div[@id='food']/p[1]

在這裡,下標從1開始

//div[@id='food']/*[last()]

last()代表倒數第乙個元素

表示倒數第二第三個用:

//div[@id='food']/*[last()-1]

//div[@id='food']/*[last()-2]

css中表示倒數第幾個元素的方法

:nth-last-child(n)

:nth-last-of-type(n)

表示第幾個元素除了可以用[1]指定下標這種方式,還有一種方式就是

//div[@id='food']/*[position()=2]

這裡position()就是代表元素的位置,這種寫法也是xpath中的一部分

高階用法:

//div[@id='food']/*[position()=last()]  

表示最後乙個元素

//div[@id='food']/*[position()=last()-2]

表示倒數第三個元素

//div[@id='food']/*[position()>=last()-2]

表示最後三個元素

與css組選擇器類似的是,xpath也是用組選擇器來選擇多組元素

css中要表示多個選擇器,用逗號來分割

xpath中 用豎線來隔開

//p | //button

等價於css中的

p, button

舉例,xpath表示相鄰兄弟的方法

//*[@id=』food』]/following-sibling::div   

解釋://*[@id=』food』]/ div   表示id為food的直接子元素的div

我們這裡加上following-sibling::  就變成了id=food節點的相鄰兄弟元素

前向兄弟節點擊擇

選擇某個元素前面的兄弟節點,在css裡無法實現

在xpath裡我們可以用 preceding-sibling:: 來表示

在xpath裡面,你還可以選擇指定元素的父元素,css也不支援此種方法

比如 //*[@class='special']  (先找到這個元素)

我們可以通過模擬linux路徑表現方式獲取到它的父元素:

//*[@class='special']/..  (獲取父元素)然後依次類推,還可以獲取父元素的父元素

使用場景:通常你想定位的元素沒有特徵,只有他的子節點有id這種特徵

爬蟲 css選擇器 和 xpath選擇器

ret soup.select my p ret soup.select body p 子子孫孫 ret soup.select body p 直接子節點 兒子 ret soup.select body p 0 text 直接子節點 兒子 xpath xpath 是一門在 xml 文件中查詢資訊的語...

Xpath 轉 JQuery 選擇器

最近在寫採集時使用 php querylist 發現選擇器可以這樣的步驟生成 使用瀏覽器工具 檢視 採集節點的 xpath 值 例如 id form1 div 3 table 3 tbody tr td 2 table 2 tbody tr td table tbody tr td table 2 ...

常用xpath選擇器和css選擇器總結

表示式說明 article 選取所有article元素的所有子節點 article 選取根元素article article a 選取所有屬於article的子元素的a元素 div 選取所有div子元素 不論出現在文件任何地方 article div 選取所有屬於article元素的後代的div元素...