Python中的Xpath和lxml庫的使用詳解
一、Xpath表達(dá)式
XPath(全稱:XML Path Language)即 XML 路徑語言,它是一門在 XML 文檔中查找信息的語言,最初被用來搜尋 XML 文檔,同時(shí)它也適用于搜索 HTML 文檔。
因此,在爬蟲過程中可以使用 XPath 來提取相應(yīng)的數(shù)據(jù)。
Xpath節(jié)點(diǎn):有父、子、同代、先輩、后代節(jié)點(diǎn)
<?xml version="1.0" encoding="utf-8"?> <shop> <book> <title lang="zh-CN">java</title> <name>Java編程思想</name> <year>2011</year> <address>www.baidu.com</address> </book> </shop>
說明:
- title name year address 都是 book 的子節(jié)點(diǎn)
- book 是 title name year address 父節(jié)點(diǎn)
- title name year address 屬于同代節(jié)點(diǎn)
- title 元素的先輩節(jié)點(diǎn)是 book shop
- shop 的后代節(jié)點(diǎn)是 book title name year address
二、Xpath基本語法
1) 基本語法
2) xpath通配符
xpath('/div/*')選取div下的所有子節(jié)點(diǎn)xpath('/div[@*]')選取所有帶屬性的div節(jié)點(diǎn)
3) 多路徑匹配
xpath表達(dá)式1 | xpath表達(dá)式2 | xpath表達(dá)式3
xpath('//div|//table') 選取所有的div和table節(jié)點(diǎn)
4)功能函數(shù)
三、lxml庫
lxml 是 Python 的第三方解析庫,完全使用 Python 語言編寫,它對 Xpath 表達(dá)式提供了良好的支持,因此能夠了高效地解析 HTML/XML 文檔。
本節(jié)講解如何通過 lxml 庫解析 HTML 文檔。
安裝lxml庫
pip3 install lxml
lxml使用流程
1) 導(dǎo)入模塊
from lxml import etree
2)創(chuàng)建解析對象
parse_html = etree.HTML(html)
3) 調(diào)用xpath表達(dá)式
r_list = parse_html.xpath('xpath表達(dá)式')
4) lxml庫數(shù)據(jù)提取
print(r_list)
四、實(shí)戰(zhàn)案例
豆瓣書店
#豆瓣書店 import requests from lxml import etree if __name__ == '__main__': url='https://market.douban.com/book/?utm_campaign=book_nav_freyr&utm_source=douban&utm_medium=pc_web' headers_={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" } res=requests.get(url,headers_) # print(res.text) html=etree.HTML(res.text) #獲取所有的li lis=html.xpath('.//li[@class="book-item"]') #循環(huán) for li in lis: #獲取li下的圖片 img=li.xpath('.//div[@class="panel-img"]/img/@src')[0] # print(img) # 獲取li下的標(biāo)題 title = li.xpath('.//div[@class="panel-detail"]/div/h3/text()')[0] print(img, title)
到此這篇關(guān)于Python中的Xpath和lxml庫的使用詳解的文章就介紹到這了,更多相關(guān)Python中的Xpath和lxml庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyCharm中的terminal運(yùn)行從PS修改成cmd方式
這篇文章主要介紹了PyCharm中的terminal運(yùn)行從PS修改成cmd方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06Python dict字典基本操作(添加、修改、刪除鍵值對)
本文主要介紹了Python dict字典基本操作,主要包括字典添加、修改、刪除鍵值對等,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Python3讀寫Excel文件(使用xlrd,xlsxwriter,openpyxl3種方式讀寫實(shí)例與優(yōu)劣)
這篇文章主要介紹了Python3讀寫Excel文件,使用xlrd,xlsxwriter,openpyxl3種方式讀寫實(shí)例與優(yōu)劣,需要的朋友可以參考下2020-02-02使用pycharm創(chuàng)建Django項(xiàng)目失敗的解決方案
使用PyCharm創(chuàng)建Django項(xiàng)目時(shí)遇到無法運(yùn)行的問題,可以檢查Python的安裝路徑設(shè)置是否正確,在PyCharm的設(shè)置中找到項(xiàng)目解釋器的位置,確保路徑正確,如果不確定Python的安裝位置,可以在命令提示符中使用“where Python”命令查詢2024-09-09Python網(wǎng)絡(luò)編程之HTTP客戶端模塊urllib與urllib3
這篇文章介紹了Python網(wǎng)絡(luò)編程之HTTP客戶端模塊urllib與urllib3,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05python linecache讀取行更新的實(shí)現(xiàn)
本文主要介紹了python linecache讀取行更新的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03