最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

1.etree.HTML()

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

如果想通過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)
# 通過xpath表達(dá)式獲取h1標(biāo)簽中的文本
text = _element.xpath('//h1/text()')
print 'result is: ', text

結(jié)果:

result is: ['This is a test']

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

2.etree.tostring()

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

通過截圖左下角的提示可以知道,使用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()”看看:

然后通過代碼實(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']

通過“//h1//text()”表達(dá)式確實(shí)可以得到想要的內(nèi)容,但是得到的是一個(gè)列表,還需要將列表中的所有元素“拼”起來才行,是不是有點(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ì)象,然后通過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()方法是不是很容易的就解決問題了。

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

相關(guān)文章

  • Python辦公自動(dòng)化之Excel(中)

    Python辦公自動(dòng)化之Excel(中)

    本篇文章將介紹如何用openpyxl操作excel,它支持格式的表格文件,并且支持 Numpy、Pandas 等包,可用于繪制圖表
    2021-05-05
  • Pandas?時(shí)間序列分析中的resample函數(shù)

    Pandas?時(shí)間序列分析中的resample函數(shù)

    這篇文章主要介紹了Pandas?時(shí)間序列分析中的resample函數(shù),Pandas?中的resample函數(shù)用于各種頻率的轉(zhuǎn)換工作,下面我們就來看看其的參數(shù)、相關(guān)資料等,需要的小伙伴可以參考一下,希望給你帶來幫助
    2022-02-02
  • PyQt QCombobox設(shè)置行高的方法

    PyQt QCombobox設(shè)置行高的方法

    今天小編就為大家分享一篇PyQt QCombobox設(shè)置行高的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 什么是python的函數(shù)體

    什么是python的函數(shù)體

    在本篇文章里小編給大家分享的是一篇關(guān)于python函數(shù)體的基礎(chǔ)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • python實(shí)現(xiàn)上傳樣本到virustotal并查詢掃描信息的方法

    python實(shí)現(xiàn)上傳樣本到virustotal并查詢掃描信息的方法

    這篇文章主要介紹了python實(shí)現(xiàn)上傳樣本到virustotal并查詢掃描信息的方法,是比較實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • 使用Template格式化Python字符串的方法

    使用Template格式化Python字符串的方法

    今天小編就為大家分享一篇使用Template格式化Python字符串的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python把數(shù)據(jù)框?qū)懭隡ySQL的方法

    python把數(shù)據(jù)框?qū)懭隡ySQL的方法

    這篇文章主要介紹了如何讓python把數(shù)據(jù)框?qū)懭隡ySQL,下文利用上海市2016年9月1日公共交通卡刷卡數(shù)據(jù)的一份數(shù)據(jù)單展開其方法,需要的小伙伴可以參考一下
    2022-03-03
  • python日志模塊logging案例詳解

    python日志模塊logging案例詳解

    日志模塊主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級(jí)、日志保存路徑、日志文件回滾等,這篇文章主要介紹了python日志模塊logging,需要的朋友可以參考下
    2024-01-01
  • Python 點(diǎn)集排序之帶索引的Z字形排序算法實(shí)現(xiàn)代碼

    Python 點(diǎn)集排序之帶索引的Z字形排序算法實(shí)現(xiàn)代碼

    這篇文章介紹了如何使用Python在Grasshopper中實(shí)現(xiàn)點(diǎn)集排序功能,包括點(diǎn)的Y坐標(biāo)分組和X坐標(biāo)排序,以及追蹤每個(gè)點(diǎn)的原始索引位置,通過創(chuàng)建點(diǎn)索引對(duì)、分組邏輯和排序,實(shí)現(xiàn)了Z字形排序算法,感興趣的朋友一起看看吧
    2025-01-01
  • 在PyCharm中高效使用遠(yuǎn)程文件編輯功能的實(shí)現(xiàn)

    在PyCharm中高效使用遠(yuǎn)程文件編輯功能的實(shí)現(xiàn)

    PyCharm作為業(yè)界領(lǐng)先的集成開發(fā)環(huán)境(IDE),提供了強(qiáng)大的本地和遠(yuǎn)程開發(fā)功能,本文詳細(xì)介紹了如何在PyCharm中使用遠(yuǎn)程文件編輯功能,希望能夠幫助你提高遠(yuǎn)程開發(fā)的效率和體驗(yàn)
    2024-08-08

最新評(píng)論

张家界市| 广德县| 宁津县| 封丘县| 大化| 会东县| 齐河县| 二连浩特市| 托里县| 东城区| 隆德县| 高淳县| 富蕴县| 茶陵县| 资中县| 宁化县| 南丹县| 铜鼓县| 汤原县| 托克逊县| 永州市| 阿图什市| 桂林市| 高密市| 平泉县| 蒙自县| 安顺市| 宁安市| 济南市| 宜兰市| 塔城市| 常州市| 任丘市| 密云县| 卓资县| 宁陵县| 赫章县| 三穗县| 昆明市| 桦川县| 乌恰县|