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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
pymongo为mongodb数据库添加索引的方法
May 11 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
django 类视图的使用方法详解
Jul 24 Python
python gdal安装与简单使用
Aug 01 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
Python中的tkinter库简单案例详解
Jan 22 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开启错误提示的总结
2019/09/24 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
js更优雅的兼容
2010/08/12 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python检测远程服务器tcp端口的方法
2015/03/14 Python
Python中的异常处理简明介绍
2015/04/13 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
python多进程并行代码实例
2019/09/30 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
销售总监工作职责
2013/11/21 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
个人年终总结范文
2015/03/09 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
python实现学员管理系统(面向对象版)
2022/06/05 Python