前言
前面已經學習了requests和beautifulsoup庫的知識,大家可以看,,今天再來學習一下用一種網頁解析的庫lxml。
lxml是python語言裡和xml以及html工作的功能最豐富和最容易使用的庫。lxml是為libxml2和libxslt庫的乙個python化的繫結。它與眾不同的地方是它兼顧了這些庫的速度和功能完整性,以及純python api的簡潔性,大部分與熟知的elementtree api相容但比之更優越。
lxml庫的安裝
pip install lxml
利用 pip 安裝即可
lxml庫的簡單用法
首先我們利用它來解析 html **,先來乙個小例子來感受一下它的基本用法。
fromlxml importetree首先我們使用 lxml 的 etree 庫,然後利用 etree.html 初始化,然後我們將其列印出來。其中,這裡體現了 lxml 的乙個非常實用的功能就是自動修正 html **,大家應該注意到了,最後乙個 li 標籤,其實我把尾標籤刪掉了,是不閉合的。不過,lxml 因為繼承了 libxml2 的特性,具有自動修正 html **的功能。text ='''
html =etree.html(text)
result =etree.tostring(html)
print(result)
不僅補全了 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可見,etree.parse 的型別是 elementtree,通過呼叫 xpath 以後,得到了乙個列表,包含了 5 個 li 元素,每個元素都是 element 型別。html =etree.parse('hello.html')
printtype(html)
result =html.xpath('//li')
printresult
printlen(result)
printtype(result)
printtype(result[0])
#執行結果
[,,,,]
(2)獲取 li 標籤的所有 class
result =html.xpath('//li/@class')(3)獲取 li 標籤下 href 為 link1.html 的 a 標籤printresult
#執行結果
['item-0','item-1','item-inactive','item-1','item-0']
result =html.xpath('//li/a[@href="link1.html"]')(4)獲取 li 標籤下的所有 span 標籤printresult
#執行結果
因為 / 是用來獲取子元素的,而 span 並不是 li 的子元素,所以,要用雙斜槓。
result =html.xpath('//li//span')(5)獲取 li 標籤下的所有 class,不包括 liprintresult
#
result =html.xpath('//li/a//@class')(6)獲取最後乙個 li 的 a 的 hrefprintresult
#['bold']
result =html.xpath('//li[last()]/a/@href')(7)獲取倒數第二個元素的內容printresult
#['link5.html']
result =html.xpath('//li[last()-1]/a')(8)獲取 class 為 bold 的標籤名printresult[0].text
# fourth item
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 安...