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 相关文章推荐
win7 下搭建sublime的python开发环境的配置方法
Jun 18 Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
详解Python中的分支和循环结构
Feb 11 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 Python
浅析Python OpenCV三种滤镜效果
Apr 11 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中$_POST与php://input的区别实例分析
2015/01/07 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
js 上传图片预览问题
2010/12/06 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
在Pandas中处理NaN值的方法
2019/06/25 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
化学专业毕业生自荐信
2013/11/15 职场文书
领导视察欢迎词
2014/01/15 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
行政副总岗位职责
2014/02/23 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
幼儿园区域活动总结
2014/05/08 职场文书
个人求职信格式范文
2015/03/20 职场文书
清洁工工作总结
2015/08/11 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android