筆記 爬蟲 XPATH

2022-07-30 01:24:10 字數 3936 閱讀 9922

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 ...