python處理HTML與XML之RSS閱讀器

RSS是一種描述和同步網站內容的格式。RSS是基於XML的。

以下代碼未實現,有報錯

#-*- coding:utf-8 -*-
#file:pyRSS.py
#

import Tkinter
import urllib
import xml.parsers.expat

#XML解析類
class MyXML:
    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.date=False
        self.edit=edit                                    #多行文本框對象
    #起始標記處理方法
    def start(self,name,attrs):                           
        if name=='title':                                 #判斷是否爲title元素
            self.title=True                               #標誌設爲真
        elif name=='pubDate':                             #判斷是否爲pubDate元素
            self.date=True
        else:
            pass
    #結束標記處理方法
    def end(self,name,attrs):                                  
        if name=='title':
            self.title=False                              #標記設爲假
        elif name=='pubDate':
            self.date=False                               #標記設爲假
        else:
            pass
    #字符數據處理方法
    def data(self,name):
        if self.title:                                    #根據標誌狀態輸出數據
            self.edit.insert(Tkinter.END,'***********************\n')
            self.edit.insert(Tkinter.END,'Title:')
            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.get=Tkinter.Button(root,text='獲取RSS',command=self.Get)
        self.get.place(x=280,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='http://www.python.org/channews.rdf'
        page=urllib.urlopen(url)                  #打開URL
        data=page.read()                          #讀取URL內容
        parser=MyXML(self.edit)                   #生成實例對象
        parser.feed(data)                         #處理XML數據
        
root=Tkinter.Tk()
window=Window(root)
root.minsize(600,480)
root.maxsize(600,480)
root.mainloop()
        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章