Python操作lxml庫之基礎(chǔ)使用篇
一、lxml庫概述
1、lxml庫介紹
lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的數(shù)據(jù);lxml和正則一樣,也是用C語言實(shí)現(xiàn)的,是一款高性能的python HTML、XML解析器,也可以利用XPath語法,來定位特定的元素及節(jié)點(diǎn)信息。
2、lxml庫特點(diǎn)
HTML是超文本標(biāo)記語言,主要用于顯示數(shù)據(jù),他的焦點(diǎn)是數(shù)據(jù)的外觀
XML是可擴(kuò)展標(biāo)記語言,主要用于傳輸和存儲數(shù)據(jù),他的焦點(diǎn)是數(shù)據(jù)的內(nèi)容
3、lxml庫的安裝
windows系統(tǒng)下,在cmd命令提示框中,輸入如下命令
pip install lxml
在cmd命令行驗(yàn)證是否安裝成功。若引入模塊,不返回錯(cuò)誤則說明安裝成功。
二、基本使用
1、lxml.etree
在爬蟲代碼采集過程中,通過etree.HTML直接將字符串實(shí)例轉(zhuǎn)化為element對象。
import requests from lxml import etree res = requests.get("http://www.jsons.cn/zt/") html = res.text root_element = etree.HTML(html) print(root_element) print(root_element.tag)
2、解析HTML網(wǎng)頁
#解析HTML字符串 from lxml import etree text = ''' <html><body> <div class="key"> <div class="name">無羨</div> <div class="age">20</div> <div class="address">四川</div> </div> </body></html> ''' # 開始初始化 html = etree.HTML(text) # 這里需要傳入一個(gè)html形式的字符串 print(html) print(type) # 將字符串序列化為html字符串 result = etree.tostring(html).decode('utf-8') print(result) print(type(result))
3、讀取并解析HTML文件
from lxml import etree # 將html文件進(jìn)行讀取 html = etree.parse('1.html') # 將html內(nèi)容序列化 result = etree.tostring(html).decode('utf-8') print(result) print(type(result)) html = etree.HTML(result) # 這里需要傳入一個(gè)html形式的字符串 print(html) print(type)
三、lxml使用流程
1、 導(dǎo)入模塊
from lxml import etree
2、創(chuàng)建解析對象
調(diào)用 etree 模塊的 HTML() 方法來創(chuàng)建 HTML 解析對象。
parse_html = etree.HTML(html)
HTML() 方法能夠?qū)?HTML 標(biāo)簽字符串解析為 HTML 文件,該方法可以自動修正 HTML 文本。
from lxml import etree html_str = ''' <div> <ul> <li class="item1"><a href="link1.html">Python</a></li> <li class="item2"><a href="link2.html">Java</a></li> <li class="site1"><a href="c.biancheng.net">C語言中文網(wǎng)</a> <li class="site2"><a href="www.baidu.com">百度</a></li> <li class="site3"><a href="www.jd.com">京東</a></li> </ul> </div> ''' html = etree.HTML(html_str) result = etree.tostring(html) print(result.decode('utf-8'))
四、lxml庫數(shù)據(jù)提取
1、提取所有a標(biāo)簽內(nèi)的文本信息
from lxml import etree # 創(chuàng)建解析對象 parse_html=etree.HTML(html) # 書寫xpath表達(dá)式,提取文本最終使用text() xpath_bds='//a/text()' # 提取文本數(shù)據(jù),以列表形式輸出 r_list=parse_html.xpath(xpath_bds) # 打印數(shù)據(jù)列表 print(r_list)
2、獲取所有href的屬性值
from lxml import etree # 創(chuàng)建解析對象 parse_html=etree.HTML(html) # 書寫xpath表達(dá)式,提取文本最終使用text() xpath_bds='//a/@href' # 提取文本數(shù)據(jù),以列表形式輸出 r_list=parse_html.xpath(xpath_bds) # 打印數(shù)據(jù)列表 print(r_list)
3、不匹配href=" www.biancheng.net/priduct"
from lxml import etree # 創(chuàng)建解析對象 parse_html=etree.HTML(html) # 書寫xpath表達(dá)式,提取文本最終使用text() xpath_bds='//a/@href' # 提取文本數(shù)據(jù),以列表形式輸出 xpath_bds='//ul[@id="sitename"]/li/a/@href' # 打印數(shù)據(jù)列表 print(r_list)
總結(jié)
到此這篇關(guān)于Python操作lxml庫之基礎(chǔ)使用篇的文章就介紹到這了,更多相關(guān)Python操作lxml庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python批量合成bilibili的m4s緩存文件為MP4格式 ver2.5
這篇文章主要介紹了python批量合成bilibili的m4s緩存文件為MP4格式 ver2.5的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12循環(huán)神經(jīng)網(wǎng)絡(luò)TextRNN實(shí)現(xiàn)情感短文本分類任務(wù)
這篇文章主要為大家介紹了循環(huán)神經(jīng)網(wǎng)絡(luò)TextRNN實(shí)現(xiàn)情感短文本分類任務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04如何在Python?中使用?join()?函數(shù)把列表拼接成一個(gè)字符串
這篇文章主要介紹了如何在Python?中使用?join()?函數(shù)把列表拼接成一個(gè)字符串,文章圍繞?join()?函數(shù)的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對你有幫助2022-03-03Python @property原理解析和用法實(shí)例
這篇文章主要介紹了Python @property原理解析和用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02詳解Python中數(shù)據(jù)類型的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了Python中數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下2023-03-03