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调用新浪微博API项目实践
Jul 28 Python
跟老齐学Python之传说中的函数编写条规
Oct 11 Python
Python动态加载模块的3种方法
Nov 22 Python
安装dbus-python的简要教程
May 05 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
Python通过属性手段实现只允许调用一次的示例讲解
Apr 21 Python
Python之文字转图片方法
May 10 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
Python文字截图识别OCR工具实例解析
Mar 05 Python
python xlwt模块的使用解析
Apr 13 Python
详解在OpenCV中如何使用图像像素
Mar 03 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优化那些事(经验分享)
2014/11/27 PHP
php析构函数的简单使用说明
2015/08/24 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
python中循环语句while用法实例
2015/05/16 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
医学专业毕业生个人的求职信
2013/12/04 职场文书
庆八一活动方案
2014/01/25 职场文书
护士长竞聘书
2014/03/31 职场文书
职工代表大会主持词
2014/04/01 职场文书
艾滋病宣传标语
2014/06/25 职场文书
2014年度考核工作总结
2014/12/24 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
关于环保的广播稿
2015/12/17 职场文书
2016国庆促销广告语
2016/01/28 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang
Python 中的Sympy详细使用
2021/08/07 Python