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