python处理HTML与XML之RSS阅读器

RSS是一种描述和同步网站内容的格式。RSS是基于XML的。

以下代码未实现,有报错

#-*- coding:utf-8 -*-
#file:pyRSS.py
#

import Tkinter
import urllib
import xml.parsers.expat

#XML解析类
class MyXML:
    def __init__(self,edit):
        self.parser=xml.parsers.expat.ParserCreate()      #生成XMLParser
        self.parser.StartElementHandler=self.start        #起始标记处理方法
        self.parser.EndElementHandler=self.end            #结束标记处理方法
        self.parser.CharacterDataHandler=self.data        #字符数据处理方法
        self.title=False                                  #状态标识
        self.date=False
        self.edit=edit                                    #多行文本框对象
    #起始标记处理方法
    def start(self,name,attrs):                           
        if name=='title':                                 #判断是否为title元素
            self.title=True                               #标志设为真
        elif name=='pubDate':                             #判断是否为pubDate元素
            self.date=True
        else:
            pass
    #结束标记处理方法
    def end(self,name,attrs):                                  
        if name=='title':
            self.title=False                              #标记设为假
        elif name=='pubDate':
            self.date=False                               #标记设为假
        else:
            pass
    #字符数据处理方法
    def data(self,name):
        if self.title:                                    #根据标志状态输出数据
            self.edit.insert(Tkinter.END,'***********************\n')
            self.edit.insert(Tkinter.END,'Title:')
            self.edit.insert(Tkinter.END,data+'\n')
        elif self.date:
            self.edit.insert(Tkinter.END,'Date:')
            self.edit.insert(Tkinter.END,data+'\n')
        else:
            pass
    def feed(self,data):
        self.parser.Parse(data,0)
#创建组件
class Window:
    def __init__(self,root):
        self.root=root
        self.get=Tkinter.Button(root,text='获取RSS',command=self.Get)
        self.get.place(x=280,y=15)
        self.frame=Tkinter.Frame(root,bd=2)
        self.scrollbar=Tkinter.Scrollbar(self.frame)
        self.edit=Tkinter.Text(self.frame,yscrollcommand=self.scrollbar.set,width=96,height=32)
        self.scrollbar.config(command=self.edit.yview)
        self.edit.pack(side=Tkinter.LEFT)
        self.scrollbar.pack(side=Tkinter.RIGHT,fill=Tkinter.Y)
        self.frame.place(y=50)
    def Get(self):
        url='http://www.python.org/channews.rdf'
        page=urllib.urlopen(url)                  #打开URL
        data=page.read()                          #读取URL内容
        parser=MyXML(self.edit)                   #生成实例对象
        parser.feed(data)                         #处理XML数据
        
root=Tkinter.Tk()
window=Window(root)
root.minsize(600,480)
root.maxsize(600,480)
root.mainloop()
        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章