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实现的飞速中文网小说下载脚本
Apr 23 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
python中Apriori算法实现讲解
Dec 10 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
Python之文字转图片方法
May 10 Python
python 从csv读数据到mysql的实例
Jun 21 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
Apr 26 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
Sep 17 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
python中常用的数据结构介绍
Jan 12 Python
python playwright 自动等待和断言详解
Nov 27 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小程序自动提交到自助友情连接
2009/11/24 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
php学习笔记之面向对象
2014/11/08 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
Python实现统计单词出现的个数
2015/05/28 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python3 使用traceback定位异常实例
2020/03/09 Python
致100米运动员广播稿
2014/02/14 职场文书
竞争上岗实施方案
2014/03/21 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
机械机修工岗位职责
2014/08/03 职场文书
长城导游词300字
2015/01/30 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
react 项目中引入图片的几种方式
2021/06/02 Javascript