欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python lxml中etree的簡(jiǎn)單應(yīng)用

 更新時(shí)間:2019年05月10日 15:25:42   作者:鍋爐房劉大爺  
這篇文章主要介紹了python lxml中etree的簡(jiǎn)單應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

我一般都是通過(guò)xpath解析DOM樹(shù)的時(shí)候會(huì)使用lxml的etree,可以很方便的從html源碼中得到自己想要的內(nèi)容。

這里主要介紹一下我常用到的兩個(gè)方法,分別是etree.HTML()和etree.tostrint()。

1.etree.HTML()

etree.HTML()可以用來(lái)解析字符串格式的HTML文檔對(duì)象,將傳進(jìn)去的字符串轉(zhuǎn)變成_Element對(duì)象。作為_(kāi)Element對(duì)象,可以方便的使用getparent()、remove()、xpath()等方法。

如果想通過(guò)xpath獲取html源碼中的內(nèi)容,就要先將html源碼轉(zhuǎn)換成_Element對(duì)象,然后再使用xpath()方法進(jìn)行解析。例如,這里有一段最簡(jiǎn)單的html源碼:"<html><body><h1>This is a test</h1></body></html>",現(xiàn)在想要得到h1標(biāo)簽中的文本,可以這樣實(shí)現(xiàn):

# encoding=utf8
 
from lxml import etree
 
html = '<html><body><h1>This is a test</h1></body></html>'
# 將html轉(zhuǎn)換成_Element對(duì)象
_element = etree.HTML(html)
# 通過(guò)xpath表達(dá)式獲取h1標(biāo)簽中的文本
text = _element.xpath('//h1/text()')
print 'result is: ', text

結(jié)果:

result is: ['This is a test']

通過(guò)結(jié)果可以知道,xpath()方法放回的結(jié)果是一個(gè)列表,所以通常在取xpath()方法結(jié)果的時(shí)候,只取列表中的第一個(gè)元素。

2.etree.tostring()

etree.tostring()方法用來(lái)將_Element對(duì)象轉(zhuǎn)換成字符串。一般通過(guò)簡(jiǎn)單的xpath表達(dá)式無(wú)法得到想要的內(nèi)容的時(shí)候我就會(huì)用該方法。例如,將上面的html小改動(dòng)一下:"<html><body><h1>This <a>is a </a>test</h1></body></html>",這時(shí)候如果想要得到h1中的文本該怎么辦呢?使用“//h1/text()”試試(將上面的html保存并用火狐瀏覽器打開(kāi),然后在FirePath中輸入該xpath表達(dá)式):

通過(guò)截圖左下角的提示可以知道,使用xpath表達(dá)式“//h1/text()”只能得到h1標(biāo)簽中文本的“This”和“test”,用代碼實(shí)現(xiàn)看看:

# encoding=utf8
 
from lxml import etree
 
html = '<html><body><h1>This <a>is a </a>test</h1></body></html>'
_element = etree.HTML(html)
text = _element.xpath('//h1/text()')
print 'result is: ', text

運(yùn)行結(jié)果:

result is: ['This ', 'test']

確實(shí),使用xpath()方法,只能得到h1中部分文本內(nèi)容,我們?cè)僭囋囀褂谩?/h1//text()”看看:

然后通過(guò)代碼實(shí)現(xiàn)看看:

# encoding=utf8
 
from lxml import etree
 
html = '<html><body><h1>This <a>is a </a>test</h1></body></html>'
_element = etree.HTML(html)
text = _element.xpath('//h1//text()')
print 'result is: ', text

運(yùn)行結(jié)果:

result is: ['This ', 'is a ', 'test']

通過(guò)“//h1//text()”表達(dá)式確實(shí)可以得到想要的內(nèi)容,但是得到的是一個(gè)列表,還需要將列表中的所有元素“拼”起來(lái)才行,是不是有點(diǎn)麻煩。這時(shí)候,就可以考慮使用etree.tostring()方法了,etree.tostring()方法可以傳遞多個(gè)參數(shù),包括element_or_tree、encoding、method等,其中method參數(shù)為text的時(shí)候,表示返回_Element對(duì)象中的所有文本,所以可以這樣:

# encoding=utf8
 
from lxml import etree
 
html = '<html><body><h1>This <a>is a </a>test</h1></body></html>'
_element = etree.HTML(html)
# 先找到h1對(duì)象,然后通過(guò)etree.tostring方法找到h1對(duì)象中的所有文本
_h = _element.xpath('//h1')
# 注意,xpath方法返回的是一個(gè)列表,我們需要的是列表中的第一個(gè)元素:代表h1標(biāo)簽的_Element對(duì)象
result = etree.tostring(_h[0], method='text')
print 'result is: ', result

運(yùn)行結(jié)果:

result is: This is a test

這時(shí)候使用etree.tostring()方法是不是很容易的就解決問(wèn)題了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于python實(shí)現(xiàn)高速視頻傳輸程序

    基于python實(shí)現(xiàn)高速視頻傳輸程序

    這篇文章主要介紹了基于python實(shí)現(xiàn)高速視頻傳輸程序的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Python嵌套函數(shù)與nonlocal使用詳細(xì)介紹

    Python嵌套函數(shù)與nonlocal使用詳細(xì)介紹

    這篇文章主要介紹了Python嵌套函數(shù)與nonlocal使用,nonlocal關(guān)鍵字與global關(guān)鍵字有點(diǎn)相似,可以對(duì)比著理解。nonlocal關(guān)鍵字只能作用域局部變量,且始終找離當(dāng)前最近的上層局部作用域中的變量
    2022-09-09
  • 詳解Django中的過(guò)濾器

    詳解Django中的過(guò)濾器

    這篇文章主要介紹了Django中的過(guò)濾器,Django是重多高人氣Python框架中最為著名的一個(gè),需要的朋友可以參考下
    2015-07-07
  • python中@contextmanager實(shí)例用法

    python中@contextmanager實(shí)例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中@contextmanager實(shí)例用法,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。
    2021-02-02
  • Django model反向關(guān)聯(lián)名稱(chēng)的方法

    Django model反向關(guān)聯(lián)名稱(chēng)的方法

    今天小編就為大家分享一篇Django model反向關(guān)聯(lián)名稱(chēng)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 基于PyTorch實(shí)現(xiàn)一個(gè)簡(jiǎn)單的CNN圖像分類(lèi)器

    基于PyTorch實(shí)現(xiàn)一個(gè)簡(jiǎn)單的CNN圖像分類(lèi)器

    本文記錄了一個(gè)簡(jiǎn)單的基于pytorch的圖像多分類(lèi)器模型構(gòu)造過(guò)程,參考自Pytorch官方文檔、磐創(chuàng)團(tuán)隊(duì)的《PyTorch官方教程中文版》以及余霆嵩的《PyTorch 模型訓(xùn)練實(shí)用教程》。從加載數(shù)據(jù)集開(kāi)始,包括了模型設(shè)計(jì)、訓(xùn)練、測(cè)試等過(guò)程。
    2021-05-05
  • python numpy元素的區(qū)間查找方法

    python numpy元素的區(qū)間查找方法

    今天小編就為大家分享一篇python numpy元素的區(qū)間查找方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python?SDK實(shí)現(xiàn)私服上傳下載的示例

    Python?SDK實(shí)現(xiàn)私服上傳下載的示例

    本文主要介紹了Python?SDK實(shí)現(xiàn)私服上傳下載的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>
    2021-11-11
  • Python數(shù)據(jù)結(jié)構(gòu)與算法之字典樹(shù)實(shí)現(xiàn)方法示例

    Python數(shù)據(jù)結(jié)構(gòu)與算法之字典樹(shù)實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之字典樹(shù)實(shí)現(xiàn)方法,可實(shí)現(xiàn)針對(duì)單詞出現(xiàn)次數(shù)的統(tǒng)計(jì)功能,涉及Python樹(shù)結(jié)構(gòu)的定義、遍歷及統(tǒng)計(jì)等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • Python生成器generator和yield關(guān)鍵字的使用

    Python生成器generator和yield關(guān)鍵字的使用

    生成器是一種特殊的迭代器,可以通過(guò)列表推導(dǎo)式的修改或者使用yield關(guān)鍵字來(lái)創(chuàng)建,生成器函數(shù)能夠在迭代時(shí)動(dòng)態(tài)產(chǎn)生值,而不是一次性生成所有值,這有助于節(jié)省內(nèi)存,yield關(guān)鍵字使函數(shù)執(zhí)行暫停并保存當(dāng)前狀態(tài),下次調(diào)用時(shí)從停止處繼續(xù)執(zhí)行
    2024-09-09

最新評(píng)論