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重试装饰器示例
Feb 11 Python
利用Python实现简单的相似图片搜索的教程
Apr 23 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
在Python中使用正则表达式的方法
Aug 13 Python
Python 数据结构之队列的实现
Jan 22 Python
Python中Threading用法详解
Dec 27 Python
Python3多线程爬虫实例讲解代码
Jan 05 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 Python
使用TFRecord存取多个数据案例
Feb 17 Python
Python如何绘制日历图和热力图
Aug 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日历[测试通过]
2008/03/27 PHP
php读取mysql的简单实例
2014/01/15 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
js实现上传图片预览的方法
2015/02/09 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
node.js的http.createServer过程深入解析
2019/06/06 Javascript
JS如何生成动态列表
2020/09/22 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
Python读写及备份oracle数据库操作示例
2018/05/17 Python
详解Python中的四种队列
2018/05/21 Python
浅述python2与python3的简单区别
2018/09/19 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
小学运动会表扬稿
2014/01/19 职场文书
《金钱的魔力》教学反思
2014/02/24 职场文书
公司接待方案
2014/03/08 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
政工例会汇报材料
2014/08/26 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
golang语言指针操作
2022/04/14 Golang
openstack云计算keystone组件工作介绍
2022/04/20 Servers
JavaScript实现简单的音乐播放器
2022/08/14 Javascript