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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
Python常见数据结构详解
Jul 24 Python
简单的抓取淘宝图片的Python爬虫
Dec 25 Python
使用Python的Twisted框架实现一个简单的服务器
Apr 16 Python
Python优化技巧之利用ctypes提高执行速度
Sep 11 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
windows下安装Python虚拟环境virtualenvwrapper-win
Jun 14 Python
Python 的AES加密与解密实现
Jul 09 Python
Python利用WMI实现ping命令的例子
Aug 14 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
解决echarts中饼图标签重叠的问题
May 16 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 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
oracle资料库函式库
2006/10/09 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
PHP学习笔记之二
2011/01/17 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
树结构之JavaScript
2017/01/24 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
Python set集合类型操作总结
2014/11/07 Python
python图像处理之镜像实现方法
2015/05/30 Python
Python中存取文件的4种不同操作
2018/07/02 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
django用户登录验证的完整示例代码
2019/07/21 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
JSF的标签库有哪些
2012/04/27 面试题
中英双版中文教师求职信
2013/10/27 职场文书
毕业生护理专业个人求职信范文
2014/01/04 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
外出学习心得体会范文
2016/01/18 职场文书
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python