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

使用python解析xml成對應(yīng)的html示例分享

 更新時間:2014年04月02日 11:13:34   作者:  
這篇文章主要介紹了使用python解析xml成對應(yīng)的html示例,需要的朋友可以參考下

SAX將dd.xml解析成html。當(dāng)然啦,如果得到了xml對應(yīng)的xsl文件可以直接用libxml2將其轉(zhuǎn)換成html。

復(fù)制代碼 代碼如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#---------------------------------------
#   程序:XML解析器
#   版本:01.0
#   作者:mupeng
#   日期:2013-12-18
#   語言:Python 2.7
#   功能:將xml解析成對應(yīng)的html
#   注解:該程序用xml.sax模塊的parse函數(shù)解析XML,并生成事件
#   繼承ContentHandler并重寫其事件處理函數(shù)
#   Dispatcher主要用于相應(yīng)標(biāo)簽的起始、結(jié)束事件的派發(fā)
#---------------------------------------
from xml.sax.handler import ContentHandler
from xml.sax import parse

class Dispatcher:
    def dispatch(self, prefix, name, attrs=None):
        mname = prefix + name.capitalize()
        dname = 'default' + prefix.capitalize()
        method = getattr(self, mname, None)
        if callable(method): args = ()
        else:
            method = getattr(self, dname, None)
            #args = name
        #if prefix == 'start': args += attrs
        if callable(method): method()

    def startElement(self, name, attrs):
        self.dispatch('start', name, attrs)

    def endElement(self, name):
        self.dispatch('end', name)

class Website(Dispatcher, ContentHandler):

    def __init__(self):
        self.fout = open('ddt_SAX.html', 'w')
        self.imagein = False
        self.desflag = False
        self.item = False
        self.title = ''
        self.link = ''
        self.guid = ''
        self.url = ''
        self.pubdate = ''
        self.description = ''
        self.temp = ''
        self.prx = ''
    def startChannel(self):

        self.fout.write('''<html>\n<head>\n<title> RSS-''')

    def endChannel(self):
       self.fout.write('''
                    <tr><td height="20"></td></tr>
                    </table>
                    </center>
                    <script>
    function  GetTimeDiff(str)
    {
     if(str == '')
     {
      return '';
     }

     var pubDate = new Date(str);
     var nowDate = new Date();
     var diffMilSeconds = nowDate.valueOf()-pubDate.valueOf();
     var days = diffMilSeconds/86400000;
     days = parseInt(days);

     diffMilSeconds = diffMilSeconds-(days*86400000);
     var hours = diffMilSeconds/3600000;
     hours = parseInt(hours);

     diffMilSeconds = diffMilSeconds-(hours*3600000);
     var minutes = diffMilSeconds/60000;
     minutes = parseInt(minutes);

     diffMilSeconds = diffMilSeconds-(minutes*60000);
     var seconds = diffMilSeconds/1000;
     seconds = parseInt(seconds);

     var returnStr = "±±¾©·¢²¼Ê±¼ä£º" + pubDate.toLocaleString();

     if(days > 0)
     {
      returnStr = returnStr + "&nbsp;£¨¾àÀëÏÖÔÚ" + days + "Ìì" + hours + "Сʱ" + minutes + "·ÖÖÓ£©";
     }
     else if (hours > 0)
     {
      returnStr = returnStr + "&nbsp;£¨¾àÀëÏÖÔÚ" + hours + "Сʱ" + minutes + "·ÖÖÓ£©";
     }
     else if (minutes > 0)
     {
      returnStr = returnStr + "&nbsp;£¨¾àÀëÏÖÔÚ" + minutes + "·ÖÖÓ£©";
     }

     return returnStr;

    }

    function GetSpanText()
    {
     var pubDate;
     var pubDateArray;
     var spanArray = document.getElementsByTagName("span");

     for(var i = 0; i < spanArray.length; i++)
     {
      pubDate = spanArray[i].innerHTML;
      document.getElementsByTagName("span")[i].innerHTML = GetTimeDiff(pubDate);   
     }
    }

    GetSpanText();
   </script>
                </body>
                </html>
                ''')
       self.fout.close()

    def characters(self, chars):
        if chars.strip():
            #chars = chars.strip()
            self.temp += chars
            #print self.temp

      
    def startTitle(self):

        if self.item:
            self.fout.write('''
                        <tr bgcolor="#eeeeee">\n<td style="padding-top:5px;padding-left:5px;" height="30">\n<B>
                    ''')

    def endTitle(self):

        if not self.imagein and not self.item:
            self.title = self.temp
            self.temp = ''
            self.fout.write(self.title.encode('gb2312'))

            #self.title = self.temp
            self.fout.write('''
                </title>\n</head>\n<body>\n<center>\n
                <script>\n

                        function copyLink()
                        {
                                clipboardData.setData("Text",window.location.href);
                                alert("RSSÁ´½ÓÒѾ­¸´ÖƵ½¼ôÌù°å");
                        }

                        function subscibeLink()
                        {
                                var str = window.location.pathname;
                                while(str.match(/^\//))
                                {
                                        str = str.replace(/^\//,"");
                                }
                                window.open("http://rss.sina.com.cn/my_sina_web_rss_news.html?url=" + str,"_self");

                        }
                        </script>\n
                <table width="750" cellpadding="0" cellspacing="0">\n
                <tr>\n
                <td align="right" style="padding-right:15px;" valign="bottom">\n
            ''')

        if self.item:
            self.title = self.temp
            self.temp = ''
            self.fout.write(self.title.encode('gb2312'))
            self.fout.write('''
                        </B>
                        </td>
                        </tr>
                        <tr bgcolor="#eeeeee">
                        <td style="padding-left:5px;">
                        ''')

    def startImage(self):
        self.imagein = True

    def endImage(self):
        self.imagein = False

    def startLink(self):
        if self.imagein:
            self.fout.write('''<A href=" ''')

           
    def endLink(self):
        self.link = self.temp
        self.temp = ''
        if self.imagein:
            self.fout.write(self.link.encode('gb2312'))
            self.fout.write('''" target="_blank">\n ''')
        elif self.item:
            #self.link = self.temp
            pass
        else:
            self.fout.write(self.link)
            self.fout.write(''' " target="
      _blank
     "> ''')
            self.fout.write(self.title.encode('gb2312'))
            self.fout.write(''' </A></B></td>
                            </tr>
                            <tr><td colspan="2" align="center">
                            ''')
            self.fout.write(self.description.encode('gb2312'))
            self.fout.write('''
                        </td></tr>
                        <tr style="font-size:12px;" bgcolor="#eeeeff"><td colspan="2" style="font-size:14px;padding-top:5px;padding-bottom:5px;"><b><a href="javascript:copyLink();">¸´ÖÆ´ËÒ³Á´½Ó</a>                <a href="javascript:subscibeLink();">ÎÒҪǶÈë¸ÃÐÂÎÅÁÐ±íµ½ÎÒµÄÒ³Ãæ£¨¼òµ¥¡¢¿ìËÙ¡¢ÊµÊ±¡¢Ãâ·Ñ£©</a></b></td></tr>
                        </table>
                        <table width="750" cellpadding="0" cellspacing="0">
                            ''')

    def startUrl(self):
        if self.imagein:
            self.fout.write('''<IMG src=" ''')
    def endUrl(self):
        self.url = self.temp
        self.temp = ''
        if self.imagein:
            self.fout.write(self.url.encode('gb2312'))
            self.fout.write('''" border="0">\n
                            </A>
                            </td>
                            <td align="left" valign="bottom" style="padding-bottom:8px;"><B><A href="
                            ''')
        if self.item:
            #self.url = self.temp
            pass

    def defaultStart(self):
        pass
    def defaultEnd(self):
        self.temp = ''
    def startDescription(self):
        pass
    def endDescription(self):
        self.description = self.temp
        self.temp = ''
        if self.item:
            #self.fout.write('¡¡¡¡')
            self.fout.write(self.description.encode('gb2312'))

    def endGuid(self):
        self.guid = self.temp
    def endPubdate(self):
        if not self.temp.startswith('http'):
         self.pubdate = self.temp
         self.temp = ''
        else:
            self.pubdate = ''
    def startItem(self):
        self.item = True
    def endItem(self):
        self.item = False
        self.fout.write('''
                            </td>
                            </tr>
                            <tr bgcolor="#eeeeee">
                            <td style="padding-top:5px;padding-left:5px;">
                            <A href="''')
        self.fout.write(self.link)
        self.fout.write(''' " target="_blank"> ''')
        self.fout.write(self.guid)
        self.fout.write('''
                        </A>
                        </td>
                        </tr>
                        <tr bgcolor="#eeeeee">
                        <td style="padding-top:5px;padding-left:5px;padding-bottom:5px;"><span>''')
        self.fout.write(self.pubdate)
        self.fout.write('''</span></td>
                        </tr>
                        <tr height="10"><td></td></tr>''')

#程序入口
if __name__ == '__main__':
    parse('ddt.xml', Website())

相關(guān)文章

  • 使用python的Flask框架進(jìn)行上傳和下載文件詳解

    使用python的Flask框架進(jìn)行上傳和下載文件詳解

    這篇文章主要介紹了使用python的Flask框架進(jìn)行上傳和下載文件詳解,Flask是一個使用Pyhton編寫的輕量級Web應(yīng)用框架,工具包采用Werkzeug,模板引擎則使用Jinja2,是目前十分流行的web框架,需要的朋友可以參考下
    2023-07-07
  • 基于python的selenium全網(wǎng)最新超詳細(xì)教程

    基于python的selenium全網(wǎng)最新超詳細(xì)教程

    這篇文章主要介紹了基于python的selenium全網(wǎng)最新超詳細(xì)教程,本文內(nèi)容比較長,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Python使用新浪微博API發(fā)送微博的例子

    Python使用新浪微博API發(fā)送微博的例子

    這篇文章主要介紹了Python使用新浪微博API發(fā)送微博的例子,需要的朋友可以參考下
    2014-04-04
  • Python實(shí)現(xiàn)正整數(shù)分解質(zhì)因數(shù)操作示例

    Python實(shí)現(xiàn)正整數(shù)分解質(zhì)因數(shù)操作示例

    這篇文章主要介紹了Python實(shí)現(xiàn)正整數(shù)分解質(zhì)因數(shù)操作,結(jié)合實(shí)例形式分析了Python循環(huán)與遞歸兩種操作方法實(shí)現(xiàn)分解質(zhì)因數(shù)功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python 列表與鏈表的區(qū)別詳解

    Python 列表與鏈表的區(qū)別詳解

    這篇文章主要介紹了Python 列表與鏈表的區(qū)別詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Python實(shí)現(xiàn)基本Socket服務(wù)端與客戶端通信的完整代碼

    Python實(shí)現(xiàn)基本Socket服務(wù)端與客戶端通信的完整代碼

    這篇文章主要介紹了Python實(shí)現(xiàn)基本Socket服務(wù)端與客戶端通信,分步詳解與完整代碼都有,按需所求即可,對Python Socket服務(wù)端與客戶端通信相關(guān)知識感興趣的朋友一起看看吧
    2023-06-06
  • Python讀取文件內(nèi)容為字符串的方法(多種方法詳解)

    Python讀取文件內(nèi)容為字符串的方法(多種方法詳解)

    這篇文章主要介紹了Python讀取文件內(nèi)容為字符串的方法,本文通過三種方式給大家介紹,在文章末尾給大家提到了python讀取txt文件中字符串,字符串用空格分隔的相關(guān)知識,需要的朋友可以參考下
    2020-03-03
  • Python批量生成Excel案例數(shù)據(jù)集的方法詳解

    Python批量生成Excel案例數(shù)據(jù)集的方法詳解

    在數(shù)據(jù)分析的世界里,數(shù)據(jù)是核心,而如何高效地生成和處理數(shù)據(jù)則成為每位數(shù)據(jù)分析師必備的技能之一,今天,我們要探討一個有趣的話題——“造數(shù)”,所以本文給大家介紹了Python辦公自動化,批量生成Excel案例數(shù)據(jù)集,需要的朋友可以參考下
    2024-12-12
  • Python中的asyncio代碼詳解

    Python中的asyncio代碼詳解

    asyncio 是用來編寫 并發(fā) 代碼的庫,使用 async/await 語法。 asyncio 被用作多個提供高性能 Python 異步框架的基礎(chǔ),包括網(wǎng)絡(luò)和網(wǎng)站服務(wù),數(shù)據(jù)庫連接庫,分布式任務(wù)隊(duì)列等等。這篇文章主要介紹了Python中的asyncio,需要的朋友可以參考下
    2019-06-06
  • 如何實(shí)現(xiàn)在遠(yuǎn)程linux服務(wù)器上運(yùn)行python代碼

    如何實(shí)現(xiàn)在遠(yuǎn)程linux服務(wù)器上運(yùn)行python代碼

    這篇文章主要介紹了如何實(shí)現(xiàn)在遠(yuǎn)程linux服務(wù)器上運(yùn)行python代碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論

巴林左旗| 新丰县| 龙川县| 清水县| 定安县| 闽侯县| 青铜峡市| 海盐县| 清镇市| 泰来县| 荆州市| 砀山县| 仁布县| 白玉县| 枣庄市| 丰都县| 临颍县| 二连浩特市| 黄山市| 平陆县| 曲麻莱县| 高青县| 铁岭县| 余江县| 祁连县| 巴塘县| 尚志市| 桂林市| 阜阳市| 塔河县| 道孚县| 聂荣县| 淳化县| 衡南县| 开江县| 麻栗坡县| 建水县| 肃宁县| 黑河市| 乌兰县| 望谟县|