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 json模块使用实例
Apr 11 Python
详解python之简单主机批量管理工具
Jan 27 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
python3.5基于TCP实现文件传输
Mar 20 Python
谈一谈基于python的面向对象编程基础
May 21 Python
python sqlite的Row对象操作示例
Sep 11 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
Python dict的常用方法示例代码
Jun 23 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/06/08 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
PHP时间函数使用详解
2019/03/21 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
js 复制或插入Html的实现方法小结
2010/05/19 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
Linux机考试题
2015/10/16 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
个性发展自我评价
2014/02/11 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
实习证明格式范文
2015/06/16 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript