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 相关文章推荐
python33 urllib2使用方法细节讲解
Dec 03 Python
Python访问MySQL封装的常用类实例
Nov 11 Python
详解python中的文件与目录操作
Jul 11 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
Python安装Flask环境及简单应用示例
May 03 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
用什么库写 Python 命令行程序(示例代码详解)
Feb 20 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
Python常用模块函数代码汇总解析
Aug 31 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 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
德生1994机评
2021/03/02 无线电
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
javascript 写类方式之十
2009/07/05 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
js切换光标示例代码
2013/10/10 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
vue自定义filters过滤器
2018/04/26 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
python二叉树的实现实例
2013/11/21 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
python 6种方法实现单例模式
2020/12/15 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
Oracle性能调优原则
2012/05/03 面试题
大学同学聚会邀请函
2014/01/29 职场文书
高三复习计划
2015/01/19 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
大学团日活动总结书
2015/05/11 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
pandas数值排序的实现实例
2021/07/25 Python
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA