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写入数据到MP3文件中的方法
Jul 10 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
Python字符串的修改方法实例
Dec 19 Python
Python程序控制语句用法实例分析
Jan 14 Python
Django 实现对已存在的model进行更改
Mar 28 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
浅谈Python中文件夹和python package包的区别
Jun 01 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
php学习笔记之面向对象
2014/11/08 PHP
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
jQuery中mouseover事件用法实例
2014/12/26 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
Python字符遍历的艺术
2008/09/06 Python
用Python进行基础的函数式编程的教程
2015/03/31 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
python 的列表遍历删除实现代码
2020/04/12 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
python日志logging模块使用方法分析
2019/05/23 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
python实现学生管理系统开发
2020/07/24 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
vue项目实现分页效果
2021/03/24 Vue.js
学校法制宣传月活动总结
2014/07/03 职场文书
干部对照检查材料范文
2014/08/26 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang