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的pycurl包用法简介
Nov 13 Python
Python如何实现文本转语音
Aug 08 Python
Python中元组,列表,字典的区别
May 21 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Django Rest framework频率原理与限制
Jul 26 Python
django将数组传递给前台模板的方法
Aug 06 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
Python新手如何进行闭包时绑定变量操作
May 29 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+JS+rsa数据加密传输实现代码
2011/03/23 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
safari,opera嵌入iframe页面cookie读取问题解决方法
2010/06/23 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
详解javascript appendChild()的完整功能
2018/08/18 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
Python之Web框架Django项目搭建全过程
2017/05/02 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
Python如何计算语句执行时间
2019/11/22 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
接口可以包含哪些成员
2012/09/30 面试题
大专生简历的自我评价
2013/11/26 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
采购人员的个人自我评价
2014/01/16 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
干部对照检查材料范文
2014/08/26 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
师德师风事迹材料
2014/12/20 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL