解析網頁之xpath解析

2021-10-10 12:06:21 字數 2188 閱讀 2274

xpath指的是使用路徑表示式在 xml 文件中查詢資訊的語言。

xpath的七個節點術語:元素、屬性、文字、命名空間、處理指令、注釋以及文件(根)節點。

每個元素以及屬性都有乙個父節點。元素節點可有零個、乙個或多個子節點。就好像每一片樹葉都只能在一根樹枝上,但每一根樹枝卻有很多樹葉。以此類推,樹幹是所有樹枝的先輩節點,同一根樹枝下的兩片不同樹葉是同胞節點,大樹枝上的小樹枝上的樹葉就是大樹枝的後代節點。

前面說xpath是使用路徑表示式來查詢資訊,其實獲取資訊的方式就是選取 xml 文件中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的。也就是說,你想找到一片葉子你需要從樹主幹找起,然後找到大樹枝,然後看是在大樹枝的第幾個小樹枝上,以此類推,從而找到你想要的獲取的資訊所在的節點或節點集。既然要選取節點,那肯定就有選取節點的方式了。

安裝lxml庫

pip3 install -i  lxml
匯入etree庫,

3.解析網頁

最有用的路徑表示式:

表示式描述nodename

選取此節點的所有子節點

/從根節點擊取。

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

.選取當前節點。

. .選取當前節點的父節點。

@選取屬性。

*匹配任何元素節點

//*選取文件中的所有元素

比較常用到的路徑表示式有:

//*[@元素屬性=某某] #選取所有元素下元素屬性為某某的節點下的資訊。

/bookstore/book/title | //price #選取屬於 bookstore 元素的 book 元素的所有 title 元素,以及文件中所有的 price 元素。

2.xpath軸,資料的說法是這樣的:軸可定義相對於當前節點的節點集。按我的理解來說就是軸相當於就是一根紅線,告訴你到此為止了。就是到現在這個節點可以了,夠了。

常見的軸有:

軸名稱結果

ancestor

選取當前節點的所有先輩(父、祖父等)。

ancestor-or-self

選取當前節點的所有先輩(父、祖父等)以及當前節點本身。

attribute

選取當前節點的所有屬性。

child

選取當前節點的所有子元素。

descendant

選取當前節點的所有後代元素(子、孫等)。

descendant-or-self

選取當前節點的所有後代元素(子、孫等)以及當前節點本身。

following

選取文件中當前節點的結束標籤之後的所有節點。

following-sibling

選取當前節點之後的所有兄弟節點

namespace

選取當前節點的所有命名空間節點。

parent

選取當前節點的父節點。

preceding

選取文件中當前節點的開始標籤之前的所有節點。

preceding-sibling

選取當前節點之前的所有同級節點。

self

選取當前節點。

我舉乙個使用例子:

//zly/parent::*       #選取zly節點的所有父節點。
3.xpath可返回節點集、字串、邏輯值以及數字。

xpath的使用要注意的就是路徑節點的選取,節點擊取的對不對關係著你能否獲取到你想要的的資訊。這就需要平時多多的運用,只有平時對xpath解析網頁的多多使用,才能在有需要的時候能夠快速的應用上去。

網路爬蟲之網頁資料解析(XPath)

xpath定義 xpath表示式 lxml庫 xpath案例 引入有人說,我正則用的不好,處理html文件很累,有沒有其他的方法?有!那就是xpath,我們可以先將網路獲取的string型別資料轉換成 html xml文件,然後用 xpath 查詢 html xml 節點或元素。什麼是xml 大家都...

爬蟲之xpath解析庫

xpath語法 1.常用規則 1.nodename 節點名定位 2.從當前節點擊取子孫節點 3.從當前節點擊取直接子節點 4.nodename attribute 根據屬性定位標籤 div class ui main 5.attributename 獲取屬性 6.text 獲取文字 2.屬性匹配兩種...

Python爬蟲之Xpath解析

例項化乙個etree物件,且需要將被解析的頁面的原始碼資料載入到該物件中 呼叫etree物件中的xpath方法結合著xpath表示式實現標籤的定位和內容的捕獲 pip install lxmlfrom lxml import etree1 將本地的html檔案中的原始碼載入到etree物件中 etr...