Python中的Xpath和lxml庫(kù)的使用詳解
一、Xpath表達(dá)式
XPath(全稱:XML Path Language)即 XML 路徑語(yǔ)言,它是一門(mén)在 XML 文檔中查找信息的語(yǔ)言,最初被用來(lái)搜尋 XML 文檔,同時(shí)它也適用于搜索 HTML 文檔。
因此,在爬蟲(chóng)過(guò)程中可以使用 XPath 來(lái)提取相應(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>說(shuō)明:
- 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基本語(yǔ)法
1) 基本語(yǔ)法

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庫(kù)
lxml 是 Python 的第三方解析庫(kù),完全使用 Python 語(yǔ)言編寫(xiě),它對(duì) Xpath 表達(dá)式提供了良好的支持,因此能夠了高效地解析 HTML/XML 文檔。
本節(jié)講解如何通過(guò) lxml 庫(kù)解析 HTML 文檔。
安裝lxml庫(kù)
pip3 install lxml
lxml使用流程
1) 導(dǎo)入模塊
from lxml import etree
2)創(chuàng)建解析對(duì)象
parse_html = etree.HTML(html)
3) 調(diào)用xpath表達(dá)式
r_list = parse_html.xpath('xpath表達(dá)式')4) lxml庫(kù)數(shù)據(jù)提取
print(r_list)
四、實(shí)戰(zhàn)案例
豆瓣書(shū)店
#豆瓣書(shū)店
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庫(kù)的使用詳解的文章就介紹到這了,更多相關(guān)Python中的Xpath和lxml庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CPython 垃圾收集器檢測(cè)循環(huán)引用詳解
這篇文章主要為大家介紹了CPython 垃圾收集器檢測(cè)循環(huán)引用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
學(xué)習(xí)python的前途 python掙錢(qián)
在本文里我們給大家整理了關(guān)于學(xué)習(xí)python的前途以及python掙錢(qián)的方法整理,有興趣的朋友們閱讀下。2019-02-02
Pytorch用Tensorboard來(lái)觀察數(shù)據(jù)
這篇文章主要介紹了Pytorch用Tensorboard來(lái)觀察數(shù)據(jù),上一篇文章我們講解了關(guān)于Pytorch?Dataset的數(shù)據(jù)處理,這篇我們就來(lái)講解觀察數(shù)據(jù),下面具體相關(guān)資料,需要的朋友可以參考一下,希望對(duì)你有所幫助2021-12-12
python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解
這篇文章主要介紹了python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
Python腳本輕松實(shí)現(xiàn)檢測(cè)麥克風(fēng)功能
在進(jìn)行音頻處理或開(kāi)發(fā)需要使用麥克風(fēng)的應(yīng)用程序時(shí),確保麥克風(fēng)功能正常是非常重要的,本文將介紹一個(gè)簡(jiǎn)單的Python腳本,能夠幫助我們檢測(cè)本地麥克風(fēng)的功能,需要的可以參考下2025-08-08
簡(jiǎn)單介紹Python的Django框架加載模版的方式
這篇文章主要介紹了Python的Django框架加載模版的方式,包括一些對(duì)加載順序的介紹,需要的朋友可以參考下2015-07-07
pytorch1.0中torch.nn.Conv2d用法詳解
今天小編就為大家分享一篇pytorch1.0中torch.nn.Conv2d用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01

