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中as用法实例分析
Apr 30 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
使用Python对Excel进行读写操作
Mar 30 Python
使用Python对SQLite数据库操作
Apr 06 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
详解Python中for循环是如何工作的
Jun 30 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
pycharm 设置项目的根目录教程
Feb 12 Python
python调用API接口实现登陆短信验证
May 10 Python
django下创建多个app并设置urls方法
Aug 02 Python
Python extract及contains方法代码实例
Sep 11 Python
PyMongo 查询数据的实现
Jun 28 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
优化javascript的执行速度
2010/01/23 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Python中的CSV文件使用"with"语句的方式详解
2018/10/16 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
逻辑链路控制协议
2016/10/01 面试题
遇到的Mysql的面试题
2014/06/29 面试题
毕业设计计划书
2014/01/09 职场文书
咖啡书吧创业计划书
2014/01/13 职场文书
文明餐桌活动方案
2014/02/11 职场文书
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android
JavaScript实现两个数组的交集
2022/03/25 Javascript
postgresql中如何执行sql文件
2023/05/08 PostgreSQL