Python爬蟲之xlml解析庫(全面了解)
1.Xpath
Xpath是一門在XML中查找信息的語言,可用來在XML文檔中對(duì)元素和屬性進(jìn)行遍歷。XQuery和xpoint都是構(gòu)建于xpath表達(dá)之上
2.節(jié)點(diǎn)
父(parent),子(children),兄弟(sibling),先輩(ancetstor),后代(Decendant)
3.選取節(jié)點(diǎn)
路徑表達(dá)式
| 表達(dá)式 | 描述 | 路徑表達(dá)式 | 結(jié)果 |
| nodename | 選取此節(jié)點(diǎn)上的所有的子節(jié)點(diǎn) | bookstore | 選取bookstore元素的所有子節(jié)點(diǎn) |
| / | 從根節(jié)點(diǎn)上選取 | /bookstore | 選取根元素bookstore,為絕對(duì)路徑 |
| // | 從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),不考慮位置 | //book | 選取所有的book子元素,而不管他們?cè)谖臋n的位置 |
| . | 選取當(dāng)前節(jié)點(diǎn) | bookstore//book | 選擇bookstore后代中所有的book元素 |
| .. | 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn) | ||
| @ | 選取屬性 | //@lang | 選取名為lang的所有屬性 |
謂語
謂語用來查找某個(gè)特定的節(jié)點(diǎn)或者包含某個(gè)指定的值的節(jié)點(diǎn)
謂語被嵌在方括號(hào)中
| 路徑表達(dá)式 | 結(jié)果 |
| /bookstore/book[1] | 選取屬于bookstore子元素的第一個(gè)book元素 |
| /bookstore/book[last()] | 選取屬于bookstore子元素的最后book元素 |
| /bookstore/book[last()-1] | 選取屬于bookstore子元素的倒數(shù)第二個(gè)book元素 |
| /bookstore/book[position()<3] | 選取最前面的兩個(gè)屬于bookstore元素的子元素的book元素 |
| //title[@lang='eng'] | 選取所有的title元素,并且這些元素?fù)碛兄禐閑ng的lang屬性 |
| /bookstore/book[price>35.0] | 選取bookstore元素的所有book元素,且其中的price值大于35.0 |
選取未知節(jié)點(diǎn)(通配符)
* 匹配任何 元素節(jié)點(diǎn)
@* 匹配任何屬性節(jié)點(diǎn)
node() 匹配任何類型的節(jié)點(diǎn)
4.lxml用法
#!/usr/bin/python
#_*_coding:utf-8_*_
from lxml import etree
text='''
<div>
<ul>
<li class="item-0"><a href="link1.html" rel="external nofollow" rel="external nofollow" >first item</a></li>
<li class="item-1"><a href="link2.html" rel="external nofollow" >second item</a></li>
<li class="item-inactive"><a href="link3.html" rel="external nofollow" >third item</a></li>
<li class="item-1"><a href="link4.html" rel="external nofollow" >fourth item</a></li>
<li class="item-0"><a href="link5.html" rel="external nofollow" >fifth item</a>
</ul>
</div>
'''
# html=etree.HTML(text) #html對(duì)象,存儲(chǔ)在地址中,有自動(dòng)修正功能
# result=etree.tostring(html) #將html對(duì)象轉(zhuǎn)化為字符串
html=etree.parse('hello.html')
# result=etree.tostring(html,pretty_print=True)
# print result
print type(html)
result= html.xpath('//li')
print result
print len(result)
print type(result)
print type(result[0])
print html.xpath('//li/@class') # 獲取li標(biāo)簽下的所有的class
print html.xpath('//li/a[@href="link1.html" rel="external nofollow" rel="external nofollow" ]') #獲取li標(biāo)簽下href為link1的<a>標(biāo)簽
print html.xpath('//li//span') #獲取li標(biāo)簽下所有的span標(biāo)簽
print html.xpath('//li[last()-1]/a')[0].text #獲取倒數(shù)第二個(gè)元素的內(nèi)容
以上這篇Python爬蟲之xlml解析庫(全面了解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python繪制可以表示點(diǎn)密度的散點(diǎn)圖得方法
本文介紹基于Python語言的matplotlib模塊,對(duì)Excel表格文件中的指定數(shù)據(jù),加以密度散點(diǎn)圖繪制的方法,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-05-05
Pycharm中配置遠(yuǎn)程Docker運(yùn)行環(huán)境的教程圖解
這篇文章主要介紹了Pycharm中配置遠(yuǎn)程Docker運(yùn)行環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Python3實(shí)現(xiàn)Web網(wǎng)頁圖片下載
這篇文章主要介紹了Python3通過request.urlopen實(shí)現(xiàn)Web網(wǎng)頁圖片下載,感興趣的小伙伴們可以參考一下2016-01-01
使用PyCharm和venv進(jìn)行Python項(xiàng)目環(huán)境配置避坑指南
在進(jìn)行 Python 項(xiàng)目開發(fā)時(shí),一個(gè)干凈,隔離且配置正確的開發(fā)環(huán)境至關(guān)重要,本文結(jié)合之前安裝 Vanna 庫時(shí)遇到的問題,總結(jié)了使用 PyCharm 和 venv 進(jìn)行 Python 項(xiàng)目環(huán)境設(shè)置的最佳實(shí)踐和常見坑的解決方法,有需要的小伙伴可以參考下2025-04-04
使用APScheduler3.0.1 實(shí)現(xiàn)定時(shí)任務(wù)的方法
今天小編就為大家分享一篇使用APScheduler3.0.1 實(shí)現(xiàn)定時(shí)任務(wù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
詳細(xì)解析Python當(dāng)中的數(shù)據(jù)類型和變量
這篇文章主要介紹了Python當(dāng)中的數(shù)據(jù)類型和變量,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-04-04

