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

利用python將xml文件解析成html文件的實(shí)現(xiàn)方法

 更新時(shí)間:2017年12月22日 15:39:23   作者:丟你劉某  
下面小編就為大家分享一篇利用python將xml文件解析成html文件的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧

功能就是題目所述,我的python2.7,裝在windows環(huán)境,我使用的開發(fā)工具是wingide 6.0

1、首先是我設(shè)計(jì)的簡(jiǎn)單的一個(gè)xml文件,也就是用來(lái)解析的源文件

下面是這個(gè)文件website.xml內(nèi)容:

<website>
<page name="index" title="fuckyou">
	<h1>welcome to</h1>
	<p>this is a moment</p>
<ul>
<li><a href="shouting.html" rel="external nofollow" >Shouting</a></li>
</ul>
</page>
<page name="shouting" title="mother">
<h1>My name is likeyou</h1>
</page>
</website>

解釋:page就是對(duì)應(yīng)一個(gè)html文件,這里有兩個(gè)page也就是要解析成兩個(gè)html文件,然后分別是index.html和shouting.html,其中在index.html中通過<a>鏈接轉(zhuǎn)到shouting.html文件中顯示shouting.html文件的內(nèi)容

2、python代碼實(shí)現(xiàn)解析(xmltest.py)

#!D:\Python27\python.exe
#-*- coding:utf-8 -*-
from xml.sax import parse
from xml.sax.handler import ContentHandler
class PageCreate(ContentHandler):
 pagethrough = False
 def startElement(self, name, attrs):
  if name == 'page':
   self.pagethrough = True
   self.out = open(attrs['name'] + '.html', 'w')
   self.out.write('<html>\n<head>\n')
   self.out.write('<title>%s</title>\n' %(attrs['title']))
   self.out.write('</head>\n<body>\n')
  elif self.pagethrough:
   self.out.write('<')
   self.out.write(name)
   for str,val in attrs.items():
    self.out.write(' %s="%s"' %(str, val))
   self.out.write('>') 
   
 def endElement(self, name):
  if name == 'page':
   self.out.write('</body>\n</html>')
   self.pagethrough = False
   self.out.close()
  if self.pagethrough:
   self.out.write('<')
   self.out.write('/' + name)
   self.out.write('>')
   
 def characters(self, content):
  if self.pagethrough:
   self.out.write(content)
 
parse('D:\\pyproject\\file\\website.xml', PageCreate())

代碼解釋:

使用xml.sax解析方法調(diào)用parse方法來(lái)解析,自己創(chuàng)建了一個(gè)解析類,繼承了ContentHandler,在里面分別重寫了startelement和endelement方法還有charactors方法,startelement方法是當(dāng)找到xml文件中的開頭標(biāo)簽時(shí)調(diào)用,如<a>、<h1>,passthrough變量是為了判斷當(dāng)前是否在page標(biāo)簽里面,true表示在page標(biāo)簽里面,就是屬于當(dāng)前page頁(yè)面的元素,因?yàn)閤ml.sax是關(guān)注標(biāo)簽的,他不會(huì)管你是否在當(dāng)前哪個(gè)page里面,然后后面的代碼都容易理解,就是添加html的開頭標(biāo)簽<html><head><body>等,注意,attrs儲(chǔ)存的是標(biāo)簽的屬性,例如<page>里面name="shouting",name="index",那么就attrs就儲(chǔ)存這name="shouting"這個(gè)東西,從而在attrs里面獲取name屬性里面的shouting和index作為html文件的文件名,同理<a>里面的href=……也是通過這個(gè)數(shù)據(jù)獲取,分別存在str和val變量中,并且通過write寫進(jìn)文件。

然后endelement就是當(dāng)解析到</h1>這類的結(jié)尾標(biāo)簽的時(shí)候調(diào)用,添加結(jié)尾的標(biāo)簽,如果是文件結(jié)尾,那么就是</page>,這時(shí)候就把</html>、</body>這些html的結(jié)尾標(biāo)簽添加進(jìn)去,否則,就是page頁(yè)面里面的元素結(jié)尾標(biāo)簽

characters就是將開頭標(biāo)簽于結(jié)尾標(biāo)簽之間找到的字符串添加進(jìn)去

最后我們把python代碼運(yùn)行起來(lái)之后就可以看到在同一目錄下生成了兩個(gè)html文件,分別是shouting.html和index.html,打開index.html就可以看到一個(gè)叫做“shouting”的鏈接,點(diǎn)過去就打開了shouting.html

以上這篇利用python將xml文件解析成html文件的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 實(shí)現(xiàn)局域網(wǎng)遠(yuǎn)程屏幕截圖案例

    Python 實(shí)現(xiàn)局域網(wǎng)遠(yuǎn)程屏幕截圖案例

    這篇文章主要介紹了Python 實(shí)現(xiàn)局域網(wǎng)遠(yuǎn)程屏幕截圖案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-03-03
  • Python線性表種的單鏈表詳解

    Python線性表種的單鏈表詳解

    這篇文章主要介紹了Python線性表種的單鏈表詳解,線性表是一種線性結(jié)構(gòu),它是由零個(gè)或多個(gè)數(shù)據(jù)元素構(gòu)成的有限序列。線性表的特征是在一個(gè)序列中,除了頭尾元素,每個(gè)元素都有且只有一個(gè)直接前驅(qū),有且只有一個(gè)直接后繼
    2022-08-08
  • django admin后管定制-顯示字段的實(shí)例

    django admin后管定制-顯示字段的實(shí)例

    這篇文章主要介紹了django admin后管定制-顯示字段的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-03-03
  • python3應(yīng)用windows api對(duì)后臺(tái)程序窗口及桌面截圖并保存的方法

    python3應(yīng)用windows api對(duì)后臺(tái)程序窗口及桌面截圖并保存的方法

    今天小編就為大家分享一篇python3應(yīng)用windows api對(duì)后臺(tái)程序窗口及桌面截圖并保存的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-08-08
  • Python獲取接口數(shù)據(jù)的實(shí)現(xiàn)示例

    Python獲取接口數(shù)據(jù)的實(shí)現(xiàn)示例

    本文主要介紹了Python獲取接口數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 如何在scrapy中捕獲并處理各種異常

    如何在scrapy中捕獲并處理各種異常

    這篇文章主要介紹了如何在scrapy中捕獲并處理各種異常,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Django 跨域請(qǐng)求處理的示例代碼

    Django 跨域請(qǐng)求處理的示例代碼

    本篇文章主要介紹了Django 跨域請(qǐng)求處理的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-05-05
  • django利用request id便于定位及給日志加上request_id

    django利用request id便于定位及給日志加上request_id

    這篇文章主要介紹了django利用request id便于定位及給日志加上request_id的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧
    2018-08-08
  • Python配置mysql的教程(推薦)

    Python配置mysql的教程(推薦)

    下面小編就為大家?guī)?lái)一篇Python配置mysql的教程(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-10-10
  • python計(jì)算一個(gè)序列的平均值的方法

    python計(jì)算一個(gè)序列的平均值的方法

    這篇文章主要介紹了python計(jì)算一個(gè)序列的平均值的方法,涉及Python遞歸遍歷與數(shù)學(xué)計(jì)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

军事| 壶关县| 南靖县| 大荔县| 塔城市| 阿拉善盟| 常宁市| 固始县| 佛山市| 清丰县| 平利县| 启东市| 板桥市| 金湖县| 商都县| 盐亭县| 霸州市| 增城市| 天气| 什邡市| 柯坪县| 城步| 亚东县| 玛纳斯县| 故城县| 淄博市| 铁岭县| 龙泉市| 微博| 正宁县| 水城县| 施秉县| 观塘区| 仁寿县| 武宁县| 子洲县| 洪泽县| 阳曲县| 泸定县| 天水市| 南充市|