# -*- coding:utf-8 -*-# file: pyrss.py#import tkinterimport urllibimport xml.parsers.expatclass myxml: # xml解析类 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.description = false self.date = false self.edit = edit # 多行文本框对象 def start(self, name, attrs): # 起始标记处理方法 if name == 'title': # 判断是否为title元素 self.title = true # 标志设为真 elif name == 'description': self.description = true elif name == 'pubdate': # 判断是否为pubdate self.date = true # 标志设为真 else: pass def end(self, name): # 结束标记处理 if name == 'title': self.title = false # 标志设为假 elif name == 'description': self.description = false elif name == 'pubdate': self.date = false # 标志设为假 else: pass def data(self,data): # 字符数据处理方法 if self.title: # 根据标志状态输出数据 self.edit.insert(tkinter.end, '******************************\n') self.edit.insert(tkinter.end, 'title: ') self.edit.insert(tkinter.end, data + '\n') elif self.description: self.edit.insert(tkinter.end, 'date: ') 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.entryurl = tkinter.entry(root,width = 30) self.entryurl.place(x = 65, y = 15) self.get = tkinter.button(root, text = '读取rss', command = self.get, font = ('system','10')) self.get.place(x = 350, 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 = self.entryurl.get() page = urllib.urlopen(url) # 打开url data = page.read() # 读取url内容 parser = myxml(self.edit) # 生成实例对象 parser.feed(data) # 处理xml数据 page.close()root = tkinter.tk()root.title('rss 阅读器')window = window(root)root.minsize(700,500)root.maxsize(700,500)root.mainloop()
希望本文所述对大家的python程序设计有所帮助。
