xpath語法

python爬去網(wǎng)頁數(shù)據(jù)時(shí),如果使用requests庫和xpath,首先需要使用lxml的etree將獲取的網(wǎng)頁數(shù)據(jù)完整,因?yàn)橛袝r(shí)候使用requests.get(url ,headers=headers)獲取到的數(shù)據(jù)不完整。etree模塊就可以自動(dòng)修復(fù)html文本。

安裝lxml:

lxml是python的一個(gè)解析庫,支持html和xml的解析,同時(shí)也支持xpath解析方式。

pip install lxml

etree模塊的使用

from lxml import etree
對網(wǎng)頁HTML的解析,使用etree.HTML(html.content)
接下來就可以使用xpath抓取對應(yīng)的需求節(jié)點(diǎn)的信息了。

xpath的語法

選取節(jié)點(diǎn):
/: 表示選取直接子節(jié)點(diǎn)

<html><body><div></div></body></html>
xpath:  /div    
result: null
season:  /div表示獲取根節(jié)點(diǎn)下的div但是,根節(jié)點(diǎn)下只有<html> 這一個(gè)子節(jié)點(diǎn),/是不能獲取到子孫節(jié)點(diǎn)的

//: 表示獲取任意節(jié)點(diǎn)
謂語:
通過列子來說明
//book/div[1]
explanation: 獲取book節(jié)點(diǎn)下的第一個(gè)div節(jié)點(diǎn)
注意: xpath語法的下標(biāo)是從數(shù)字1開始的,這里和python的語法是有區(qū)別的
//book/div[last()]
explanation: 獲取book節(jié)點(diǎn)的最后一個(gè)div節(jié)點(diǎn)
//book/div[positon()<3]
explanation: 獲取book節(jié)點(diǎn)下的前兩個(gè)div節(jié)點(diǎn)
//book/div[@price=1]
explanation: 獲取book節(jié)點(diǎn)下屬性price=1 的div節(jié)點(diǎn)
//book/div[contains(@class,"f")]
explanation: 獲取book節(jié)點(diǎn)下class屬性中包含f的div節(jié)點(diǎn)
通配符:
: 表示獲取任意的節(jié)點(diǎn)
@
:表示任意屬性
多個(gè)路徑:
| : //book[@price=1] | //book[@price=2] 表示獲取屬性price=1或者price=2的book節(jié)點(diǎn)
邏輯運(yùn)算符:
< ,> , <= ,>= , !=, and , or

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容