python中lxml使用方式

2021-08-14 02:03:30 字數 2689 閱讀 1014

前言

前面已經學習了requests和beautifulsoup庫的知識,大家可以看,,今天再來學習一下用一種網頁解析的庫lxml。

lxml是python語言裡和xml以及html工作的功能最豐富和最容易使用的庫。lxml是為libxml2和libxslt庫的乙個python化的繫結。它與眾不同的地方是它兼顧了這些庫的速度和功能完整性,以及純python api的簡潔性,大部分與熟知的elementtree api相容但比之更優越。

lxml庫的安裝

pip install lxml

利用 pip 安裝即可

lxml庫的簡單用法

首先我們利用它來解析 html **,先來乙個小例子來感受一下它的基本用法。

fromlxml importetree

text ='''

html =etree.html(text)

result =etree.tostring(html)

print(result)

首先我們使用 lxml 的 etree 庫,然後利用 etree.html 初始化,然後我們將其列印出來。其中,這裡體現了 lxml 的乙個非常實用的功能就是自動修正 html **,大家應該注意到了,最後乙個 li 標籤,其實我把尾標籤刪掉了,是不閉合的。不過,lxml 因為繼承了 libxml2 的特性,具有自動修正 html **的功能。

不僅補全了 li 標籤,還新增了 body,html 標籤。

檔案讀取

除了直接讀取字串,還支援從檔案讀取內容。比如我們新建乙個檔案叫做 hello.html,內容為

利用 parse 方法來讀取檔案,同樣可以得到相同的結果。

fromlxml importetree

html =etree.parse('hello.html')

result =etree.tostring(html,pretty_print=true)

print(result)

例項測試

以上一段程式為例。

(1)獲取所有的 li 標籤

fromlxml importetree

html =etree.parse('hello.html')

printtype(html)

result =html.xpath('//li')

printresult

printlen(result)

printtype(result)

printtype(result[0])

#執行結果

[,,,,]

可見,etree.parse 的型別是 elementtree,通過呼叫 xpath 以後,得到了乙個列表,包含了 5 個 li 元素,每個元素都是 element 型別。

(2)獲取 li 標籤的所有 class

result =html.xpath('//li/@class')

printresult

#執行結果

['item-0','item-1','item-inactive','item-1','item-0']

(3)獲取 li 標籤下 href 為 link1.html 的 a 標籤

result =html.xpath('//li/a[@href="link1.html"]')

printresult

#執行結果

(4)獲取 li 標籤下的所有 span 標籤

因為 / 是用來獲取子元素的,而 span 並不是 li 的子元素,所以,要用雙斜槓。

result =html.xpath('//li//span')

printresult

#

(5)獲取 li 標籤下的所有 class,不包括 li

result =html.xpath('//li/a//@class')

printresult

#['bold']

(6)獲取最後乙個 li 的 a 的 href

result =html.xpath('//li[last()]/a/@href')

printresult

#['link5.html']

(7)獲取倒數第二個元素的內容

result =html.xpath('//li[last()-1]/a')

printresult[0].text

# fourth item

(8)獲取 class 為 bold 的標籤名

result =html.xpath('//*[@class="bold"]')

printresult[0].tag

# span

小結

**

Python中lxml模組的安裝

lxml是python中與xml及html相關功能中最豐富和最容易使用的庫。lxml並不是python自帶的包,而是為libxml2和libxslt庫的乙個python化的繫結。它與眾不同的地方是它兼顧了這些庫的速度和功能完整性,以及純python api的簡潔性,與大家熟知的elementtree...

Python中lxml模組的安裝

本文 這裡,感謝原文作者的分享,親測有效,希望可以幫到更多的童鞋。如有侵權,請告知。lxml是python中與xml及html相關功能中最豐富和最容易使用的庫。lxml並不是python自帶的包,而是為libxml2和libxslt庫的乙個python化的繫結。它與眾不同的地方是它兼顧了這些庫的速度...

python的lxml庫簡介 lxml庫

lxml 是 乙個html xml的解析器,主要的功能是如何解析和提取 html xml 資料。lxml和正則一樣,也是用 c 實現的,是一款高效能的 python html xml 解析器,我們可以利用之前學習的xpath語法,來快速的定位特定元素以及節點資訊。需要安裝c語言庫,可使用 pip 安...