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

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

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

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

1、首先是我設(shè)計的簡單的一個xml文件,也就是用來解析的源文件

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

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

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

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

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

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

相關(guān)文章

  • 解決tensorflow添加ptb庫的問題

    解決tensorflow添加ptb庫的問題

    今天小編就為大家分享一篇解決tensorflow添加ptb庫的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python for循環(huán)remove同一個list過程解析

    python for循環(huán)remove同一個list過程解析

    這篇文章主要介紹了python for循環(huán)remove同一個list過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 使用Fabric自動化部署Django項目的實現(xiàn)

    使用Fabric自動化部署Django項目的實現(xiàn)

    這篇文章主要介紹了使用Fabric自動化部署Django項目的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python圖片處理之圖片裁剪教程

    Python圖片處理之圖片裁剪教程

    這篇博文的目的是從圖片中提取一定的矩形區(qū)域作為新的圖片 簡單來說:我的全家福丟了,所以我想從以前的房間照片里,提取出其中的全家福并重新打印一張(忽視畫質(zhì)問題)現(xiàn)在我就是這么個目的,需要的朋友可以參考下
    2021-05-05
  • 單身狗福利?Python爬取某婚戀網(wǎng)征婚數(shù)據(jù)

    單身狗福利?Python爬取某婚戀網(wǎng)征婚數(shù)據(jù)

    今天我就當(dāng)回媒婆,給男性程序員來點福利.今天目標(biāo)爬取征婚網(wǎng)上呈現(xiàn)出來的女生信息保存成excel表格供大家篩選心儀的女生,需要的朋友可以參考下
    2021-06-06
  • Scrapy之爬取結(jié)果導(dǎo)出為Excel的實現(xiàn)過程

    Scrapy之爬取結(jié)果導(dǎo)出為Excel的實現(xiàn)過程

    這篇文章主要介紹了Scrapy之爬取結(jié)果導(dǎo)出為Excel的實現(xiàn)過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • opencv python 對指針儀表讀數(shù)識別的兩種方式

    opencv python 對指針儀表讀數(shù)識別的兩種方式

    這篇文章主要介紹了opencv python 對指針儀表讀數(shù)識別的兩種方式,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • python3使用print打印帶顏色的字符串代碼實例

    python3使用print打印帶顏色的字符串代碼實例

    這篇文章主要介紹了python3使用print打印帶顏色的字符串代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python PyQt5實現(xiàn)拖放效果的原理詳解

    Python PyQt5實現(xiàn)拖放效果的原理詳解

    這篇文章主要為大家詳細介紹了Python PyQt5中拖放效果的實現(xiàn)原理與實現(xiàn)代碼,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-11-11
  • Python urllib.request對象案例解析

    Python urllib.request對象案例解析

    這篇文章主要介紹了Python urllib.request對象案例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05

最新評論