前言
本來打算寫的標題是XPath語法,但是想了一下Python中的解析庫lxml,使用的是Xpath語法,同樣也是效率比較高的解析方法,所以就寫成了XPath語法和lxml庫的用法
XPath 即為 XML 路徑語言,它是一種用來確定 XML(標準通用標記語言的子集)文檔中某部分位置的語言。
XPath 基于 XML 的樹狀結構,提供在數據結構樹中找尋節點的能力。 XPath 同樣也支持HTML。
XPath 是一門小型的查詢語言。
python 中 lxml庫 使用的是 Xpath 語法,是效率比較高的解析方法。
下面話不多說了,來一起看看詳細的介紹吧
安裝
為什么要用這個庫呢,因為要寫爬蟲啊,利用lxml庫來解析 HTML 代碼,同時lxml也繼承了libxml2的特性自動修正HTML代碼,利用pip安裝即可
pip install lxml
XPath語法
XPath是一門在XML文檔中查找信息的語言,可以用于在XML文檔中通過元素和屬性進行導航
舉個栗子 😎
我們可以使用XPath提取網站地圖中的所有鏈接,也就是說可以使用XPath去找我們HTML中的一些具體的東西
節點關系
在XPath中,有七種類型的節點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔節點(或稱為根節點)
再舉個栗子 😎
<urlset><url><loc>https://qq52o.me</loc><lastmod>2018-04-28T19:00:42+00:00</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url></urlset>
第一個:父(Parent)
每個元素以及屬性都有一個父
url元素是 loc、lastmod、changefreq以及 priority元素的父
第二個:子(Children)
元素節點可有零個、一個或多個子
loc、lastmod、changefreq以及 priority元素都是url元素的子
第三個:同胞(Sibling)
擁有相同的父的節點
loc、lastmod、changefreq以及 priority元素都是url元素的同胞
第四個:先輩(Ancestor)
某節點的父、父的父,等等
loc元素的先輩是 url元素和 urlset元素
第五個:后代(Descendant)
某個節點的子,子的子,等等
urlset的后代是url、loc、lastmod、changefreq以及 priority元素
如果你分不清楚,就按照子元素從上到下的去找元素節點
選取節點
XPath使用路徑表達式在 XML 文檔中選取節點,節點是通過沿著路徑或者 step 來選取的,也就是上面所說的按照子元素從上到下去找元素節點
這些是最有用的路徑表達式 💡