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的即时标记项目练习笔记
Sep 18 Python
Python内置函数之filter map reduce介绍
Nov 30 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
用Python3创建httpServer的简单方法
Jun 04 Python
在Pycharm中自动添加时间日期作者等信息的方法
Jan 16 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
解决django model修改添加字段报错的问题
Nov 18 Python
Python实现链表反转的方法分析【迭代法与递归法】
Feb 22 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
PyTorch: Softmax多分类实战操作
Jul 07 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 加密解密内部算法
2010/04/22 PHP
php的一个简单加密解密代码
2014/01/14 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
javascript options属性集合操作代码
2009/12/28 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
在vue项目中使用md5加密的方法
2018/09/14 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
2017/07/06 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
Python程序控制语句用法实例分析
2020/01/14 Python
Django的CVB实例详解
2020/02/10 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
GC是什么?为什么要有GC?
2013/12/08 面试题
生日寿宴答谢词
2014/01/19 职场文书
法制宣传实施方案
2014/03/13 职场文书
数据保密承诺书
2014/06/03 职场文书
总经理人事任命书
2014/06/05 职场文书
活动总结新闻稿
2014/08/30 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
2015年科研工作总结范文
2015/05/13 职场文书