玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python源码实例_Python程序源代码_网站项目下载 > 正文内容

用Python代码实现的RSS阅读器示例

Python入门佳作 经典教程的全新修订 10个项目引人入胜
玩蛇网推荐图文教程:python黑客多线程扫描器

玩蛇网python之家这篇文章是关于如何使用Python代码实现RSS阅读器示例,如何用Tkinter等模块方法实现RSS订阅器的编写,参考学习过下面的正试代码后就会明白。

简单的说下RSS阅读器是什么:RSS阅读器是一种软件或是说一个程序,其实质是为了方便地读取RSS和Atom文档。

Python RSS阅读器

用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)

#www.iplaypython.com


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()

玩蛇网文章,转载请注明出处和来源网址:http://www.iplaypython.com/code/c2654.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

玩蛇网PythonQQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
出炉日期:2015-12-25 11:50 玩蛇网 www.iplaypython.com

我要分享到:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules