資料的查詢和提取 2 xpath解析庫的使用

2022-08-26 10:09:11 字數 2447 閱讀 9291

在上一節,我們介紹了正規表示式的使用,但是當我們提取資料的限制條件增多的時候,正規表示式會變的十分的複雜,出一丁點錯就提取不出來東西了。但python已經為我們提供了許多用於解析資料的庫,接

下來幾篇部落格就給大家簡單介紹一下xpath、beautiful soup以及pyquery的使用。今天首先進入xpath的學習。

在引入例項之前,我們先編寫乙個html,如下所示:

first item

second item

third item

fourth item

接下來我們都將圍繞這段進行嘗試

首先我們使用lxml庫

第一步先將這段文字轉換為乙個etree的物件,再進行轉換,輸出結果,我們輸出之後發現,願文字中缺失的閉標籤被自動的補齊,所以輸出的是一段完整的html,如下所示:

我們可以看到最後乙個li標籤 被補齊了,又多出來了html和body

這就變成了一段完整的html啦~

下面主要介紹一下用xpath尋找需要的節點

與正規表示式相同,xpath也擁有乙個書寫表示式的準則,如下所示:

/   直接的子節點

//  所有的子節點

..  父節點  

*  所有節點  

@  屬性

中括內是約束條件

接下來先介紹一下如何查詢子節點

首先看result的值,用//表示所有的子節點,後面跟*代表把所有節點。

再看result1的值,用//表示所有子節點,後面跟li,代表所有的 li 節點。

這裡還需要注意一點的是,找到的內容都是乙個列表的形式,那麼當然也可以用陣列的方式去找啦~

第三個我們暫且不看,這就是找對應的子節點的方法。

下面我們看一下如何找父節點

其實規則和之前的一樣,我們只需先找到 需要父節點的節點,然後用 .. 就可以定位到上一層的父節點了。就是這麼簡單。

上面那個**片的result2,就是在找到需要找的節點型別 li 之後,後面跟了來表示約束條件,括號裡的內容也很好理解,就是屬性href為link1.html的 li 節點

那麼有人可能會問了,如果要對乙個節點有多個屬性同時進行限制呢?

其實也很簡單,因為邏輯運算子在這裡當然適用,只用在中括號中,用and or 不等號進行連線,就能同時對多屬性進行篩選

假如說現在有一段html是這樣的

first item

如果再用

之前的方法對class值為item-0的節點進行篩選,就找不到這個了,因為,裡面不是乙個屬性,還有另外乙個item呢,所以我們這裡要用到contains這個方法,

改為etree.xpath('//li[contains(class,"item-0")]')即可

在前面,我們知道了如何找到需要的節點,肯定也想知道如何找到節點的內容(不然找他們幹嘛呢),這裡py為我們提供了乙個text()的用法,我們可以看下面的一段**

還是上面的文字,這段**,首先找到class為item-0的節點,有兩個,分別是

first item

fourth item

但是又一點要注意的是,在初始化的時候,這段文字已經被自動補齊了,變成如下所示:

first item

fourth item

先看看這段**的輸出結果

這是因為,我們用的是/ 這個符號,也就是說,只能找到 li 節點自己的文字,所以乙個為空,乙個為換行符

那麼要找到我們想找到的,有兩個途徑,首先嘗試第乙個

先找到a節點,再輸出其中的內容,**以及結果如下:

結果:可以看到輸出了我們期待的結果直接// 輸出所有的text

**以及結果如下:

再看第二種方法,也就是

結果:可以看到,這裡還輸出了換行符,也是可以理解的。

還是上面的那段文字,有很多 li 節點,其實在篩選的時候,我們可以直接用 節點➕下標來查詢節點,但是需要注意的是,這裡的下標順序就是從1開始的

常見的爬蟲分析庫(2) xpath語法

1.xpath使用路徑表示式在xml和html中進行導航 2.xpath包含標準函式庫 3.xpath是乙個w3c的標準 1.父節點 2.子節點 3.同胞節點 4.先輩節點 5.後代節點 表示式s說明 article 選取所有article元素的子節點 article 選取根元素article ar...

Web自動化 2 xpath和CSS元素定位

舉例 1 coding utf 823 import time 45 from selenium import webdriver 67 單個元素的多種定位方式89 建立driver例項 10 driver webdriver.chrome 11 12 driver.get 13 1.通過id屬性進...

更簡單高效的HTML資料提取 Xpath

xpath 是一門在 xml 文件中查詢資訊的語言。xpath 用於在 xml 文件中通過元素和屬性進行導航。相比於beautifulsoup,xpath在提取資料時會更加的方便。在python中很多庫都有提供xpath的功能,但是最基本的還是lxml這個庫,效率最高。在之前beautifulsou...