xpath是w3c的乙個標準。它最主要的目的是為了在xml1.0或xml1.1文件節點樹中定位節點所設計。目前有xpath1.0和xpath2.0兩個版本。其中xpath1.0是2023年成為w3c標準,而xpath2.0標準的確立是在2023年
xpath 是一門在 xml 文件中查詢資訊的語言
全稱為xml path language 一種小型的查詢語言
xpath 是一門在 xml 文件中查詢資訊的語言。
xpath 是 xslt 中的主要元素。
xquery 和 xpointer 均構建於 xpath 表示式之上
xpath屬於lxml庫模組,所以首先要安裝庫lxml
在 xpath 中,有七種型別的節點:元素、屬性、文字、命名空間、處理指令、注釋以及文件(根)節點。xml 文件是被作為節點樹來對待的。樹的根被稱為文件節點或者根節點。
請看下面這個 xml 文件:
<?xml version="1.0" encoding="iso-8859-1"?>
harry potter
j k. rowling
2005
29.99
上面的xml文件中的節點例子:
(文件節點)
j k. rowling (元素節點)
lang="en" (屬性節點)
基本值(或稱原子值,atomic value)
基本值是無父或無子的節點。
專案(item)
專案是基本值或者節點。
每個元素以及屬性都有乙個父。
在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:
harry potter
j k. rowling
2005
29.99
元素節點可有零個、乙個或多個子。
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:
harry potter
j k. rowling
2005
29.99
擁有相同的父的節點
在下面的例子中,title、author、year 以及 price 元素都是同胞:
harry potter
j k. rowling
2005
29.99
某節點的父、父的父,等等。
在下面的例子中,title 元素的先輩是 book 元素和 bookstore 元素:
harry potter
j k. rowling
2005
29.99
某個節點的子,子的子,等等。
某個節點的子,子的子,等等。
在下面的例子中,bookstore 的後代是 book、title、author、year 以及 price 元素:
harry potter
j k. rowling
2005
29.99
xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的。
表示式描述
例項nodename
選取nodename節點的所有子節點
xpath(『//div』)
選取了div節點的所有子節點
從根節點擊取
xpath(『/div』)
從根節點上選取div節點
選取所有的匹配節點,不考慮他們的位置
xpath(『//div』)
選取所有的div節點
選取當前節點
xpath(『./div』)
選取當前節點下的div節點
選取當前節點的父節點
xpath(『..』)
回到上乙個節點
選取屬性
xpath(』//@calss』)
選取所有的class屬性
謂語被嵌在方括號內,用來查詢某個特定的節點或包含某個制定的值的節點
表示式結果
xpath(『/body/div[1]』)
選取body下的第乙個div節點
xpath(『/body/div[last()]』)
選取body下最後乙個div節點
xpath(『/body/div[last()-1]』)
選取body下倒數第二個div節點
xpath(『/body/div[positon()<3]』)
選取body下前兩個div節點
xpath(『/body/div[@class]』)
選取body下帶有class屬性的div節點
xpath(『/body/div[@class=」main」]』)
選取body下class屬性為main的div節點
xpath(『/body/div[price>35.00]』)
選取body下price元素值大於35的div節點
xpath通過萬用字元來選取未知的xml元素
表示式結果
xpath(』/div/*』)
選取div下的所有子節點
xpath(『/div[@*]』)
選取所有帶屬性的div節點
node()
匹配任何型別的節點
使用「|」運算子可以選取多個路徑
表示式結果
xpath(『//div|//table』)
選取所有的div和table節點
軸可以定義相對於當前節點的節點集
軸名稱表示式
描述ancestor
xpath(『./ancestor::*』)
選取當前節點的所有先輩節點(父、祖父)
ancestor-or-self
xpath(『./ancestor-or-self::*』)
選取當前節點的所有先輩節點以及節點本身
attribute
xpath(『./attribute::*』)
選取當前節點的所有屬性
child
xpath(『./child::*』)
返回當前節點的所有子節點
descendant
xpath(『./descendant::*』)
返回當前節點的所有後代節點(子節點、孫節點)
following
xpath(『./following::*』)
選取文件中當前節點結束標籤後的所有節點
following-sibing
xpath(『./following-sibing::*』)
選取當前節點之後的兄弟節點
parent
xpath(『./parent::*』)
選取當前節點的父節點
preceding
xpath(『./preceding::*』)
選取文件中當前節點開始標籤前的所有節點
preceding-sibling
xpath(『./preceding-sibling::*』)
選取當前節點之前的兄弟節點
self
xpath(『./self::*』)
選取當前節點
使用函式能夠更好的進行模糊搜尋
函式用法
解釋starts-with
xpath(『//div[starts-with(@id,」ma」)]『)
選取id值以ma開頭的div節點
contains
xpath(『//div[contains(@id,」ma」)]『)
選取id值包含ma的div節點
andxpath(『//div[contains(@id,」ma」) and
contains(@id,」in」)]『)
選取id值包含ma和in的div節點
text()
xpath(『//div[contains(text(),」ma」)]『)
選取節點文字包含ma的div節點
Python爬蟲 Xpath語法筆記
一 選取節點 常用的路勁表示式 表示式描述 例項nodename 選取nodename節點的所有子節點 xpath div 選取了div節點的所有子節點 從根節點擊取 xpath div 從根節點上選取div節點 選取所有的當前節點,不考慮他們的位置 xpath div 選取所有的div節點 選取當...
Python爬蟲 Xpath語法筆記
一 選取節點 常用的路勁表示式 表示式描述 例項nodename 選取nodename節點的所有子節點 xpath div 選取了div節點的所有子節點 從根節點擊取 xpath div 從根節點上選取div節點 選取所有的當前節點,不考慮他們的位置 xpath div 選取所有的div節點 選取當...
python爬蟲筆記02 xpath
1 語法 表示式語法 nodename 選取此節點的所有子節點 從根節點擊取 任意子孫節點,不考慮位置 當前節點 當前節點的父節點 選取屬性 匹配任何節點 contains 屬性,包含的內容 模糊查詢 text 取文字內容 2 使用案例 class tit alive lang eng harry ...