Python实现的RSS阅读器实例


Posted in Python onJuly 25, 2015

本文实例讲述了Python实现的RSS阅读器。分享给大家供大家参考。具体如下:

# -*- coding:utf-8 -*-
# file: pyRSS.py
#
import Tkinter
import urllib
import xml.parsers.expat
class 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程序设计有所帮助。

Python 相关文章推荐
Python使用turtule画五角星的方法
Jul 09 Python
Python爬虫爬取美剧网站的实现代码
Sep 03 Python
pandas 数据实现行间计算的方法
Jun 08 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
python之信息加密题目详解
Jun 26 Python
详解python中的数据类型和控制流
Aug 08 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
Python魔术方法专题
Jun 19 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
Python获取指定网段正在使用的IP
Dec 14 Python
Python的logging模块基本用法
Dec 24 Python
python中altair可视化库实例用法
Jan 26 Python
Python获取央视节目单的实现代码
Jul 25 #Python
Python实现将DOC文档转换为PDF的方法
Jul 25 #Python
将Django框架和遗留的Web应用集成的方法
Jul 24 #Python
将Python的Django框架与认证系统整合的方法
Jul 24 #Python
Django与遗留的数据库整合的方法指南
Jul 24 #Python
简介Django中内置的一些中间件
Jul 24 #Python
Python字符串转换成浮点数函数分享
Jul 24 #Python
You might like
详解PHP序列化反序列化的方法
2015/10/27 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
javascript multibox 全选
2009/03/22 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
jquery禁用右键示例
2014/04/28 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
JavaScript交换两个变量方法实例
2019/11/25 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
python对象及面向对象技术详解
2016/07/19 Python
python批量修改文件夹及其子文件夹下的文件内容
2019/03/15 Python
python如何制作缩略图
2019/04/30 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
浅析PEP572: 海象运算符
2019/10/15 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
房屋公证委托书
2014/04/03 职场文书
安全目标管理责任书
2014/07/25 职场文书
教师个人教学反思
2016/02/23 职场文书