xpath使用筆記

2021-09-03 01:44:27 字數 3040 閱讀 3660

xpath 用於在xml文件中通過元素和屬性進行導航

xpath 使用路徑表示式來選取 xml 或 html 中的節點或者節點集。

在 xpath 中 有七種型別的節點:

節點關係

表示式

描述語法示例

nodename

選取此節點的所有子節點,使用者選取標籤名

book

/從根節點擊取

/book

//從匹配選擇的當前節點擊擇文件中的節點,而不考慮他們的位置

//price 選擇任意位置的 price 標籤

.選取當前節點

--..

選取當前節點的父節點--@

選取屬性

//@lang 選擇lang標籤的所有屬性

[n]選取屬於某元素下的第n個子元素,索引從1開始

/bookstore/book[2]

[last()]

選取屬於某個元素的最後乙個元素

/book[last()] last() 當作函式理解

[last()-1]

選取屬於某個元素的最後乙個元素

/book[last()-1]

[position()]

做元素定位使用

/book[position()<3 選擇最前面兩個的book元素]

[@lang]

選擇有屬性為lang的元素

//book[@lang] 選擇有lang屬性的book標籤

[@class=""]

選擇class屬性為某個值的元素

//div[@class="item"] 選擇類名為item的div標籤

*匹配任何元素節點

--@*

匹配任何屬性節點--|

表示"或"

//bookstore/book/title|//bookstore/book/price 表示匹配文章中 bookstore 下 book 標籤下的 title 或這 price 標籤

from lxml import etree

html = '''

everyday italian

giada de laurentiis

2005

30.00

harry potter

j k. rowling

2005

29.99

xquery kick start

james mcgovern

per bothner

kurt cagle

james linn

vaidyanathan nagarajan

2003

49.99

learning xml

erik t. ray

2003

39.95

'''# 將字串轉為html物件

html = etree.html(html)

# 獲取bookstore下book標籤的title標籤

res = html.xpath('//bookstore/book/title')

print(res)

# 返回值(列表中是物件):[, , , ]

# 獲取bookstore下book標籤的title標籤中category屬性值為「web」

res = html.xpath('//bookstore/book/title[@category="web"]')

print(res)

# 返回值(列表中是物件):

# 獲取bookstore下book標籤的title標籤中category屬性值為「web」的標籤的值

res = html.xpath('//bookstore/book/title[@category="web"]/text()')

print(res)

# 返回值(列表中是字串):['xquery kick start']

# 獲取bookstore下book的price屬性為100的標籤下的title()標籤的值

res = html.xpath('//bookstore/book[@price="100"]/title/text()')

print(res)

# 返回值(列表中的是字串):['everyday italian', 'learning xml']

# 獲取bookstore 下book下第1個標籤的所有屬性 [1]:表示選擇第幾個標籤 @*:表示選擇所有的屬性

res = html.xpath('//bookstore/book[1]/@*')

print(res)

# 返回值(列表中是字串)

# 獲取bookstore 下book帶有任意屬性的標籤

res = html.xpath('//bookstore/book[@*]')

print(res)

# 返回值 (列表中的是物件):[, , , ]

# 獲取帶有屬性的title元素的值

res = html.xpath('//title[@*]/text()')

print(res)

# 返回值(列表中的是字串):['everyday italian', 'harry potter', 'xquery kick start']

# 獲取book下的 title 和 price 標籤

res = html.xpath('//book/title | //book/price')

print(res)

# 返回值:(列表中的是物件):[, , , , , , , ]

# 獲取book有category或price屬性的值

res = html.xpath('//book/@category | //book/@price')

print(res)

# 返回值 (列表中的是字串):['100', 'cooking', 'children', 'web', 'web', '100']

補充:

Vim 使用筆記

set hlsearch set nohlsearch 搜尋後清除上次的加亮 nohl nohlsearch 拷貝 很有用的一句話,規定了格式選項,讓它換行不自動空格 set formatoptions tcrqn set fo r set noautoindent 再 shift insert 正...

xemacs使用筆記

xemacs使用筆記 xemacs emacs的下一代,由lucid原創 from debian參考手冊.由於不知道什麼時候刪掉了emacs的乙個重要檔案.每次都沒法安裝好.突然發現了xemacs,於是決定使用看看.本人還是菜鳥,僅供交流 我使用的ubuntu系統,所以就直接apt get inst...

TreeView使用筆記

treeview由節點構成,建樹通過對treeview.items屬性進行操作。items是乙個ttreenodes物件,這是乙個ttreenode集。一 針對ttreenodes,也就是 treeview.items,有這些屬性 1 count,節點個數。2 item index 通過index得...