[Jsign-commits] CVS: pyweb news.py,NONE,1.1
Brought to you by:
borillo
|
From: Ricardo B. D. <bo...@us...> - 2001-08-28 07:58:10
|
Update of /cvsroot/jsign/pyweb
In directory usw-pr-cvs1:/tmp/cvs-serv22456
Added Files:
news.py
Log Message:
Utilidad para conectarse al "slashdot" u otro servidor que ofrezca noticias en
format RDF, y generar una página HTML con el resultado del parsing.
--- NEW FILE: news.py ---
from xml.sax import *
import urllib, sys
class RDFElement:
def __init__(self):
self.title = ""
self.link = ""
class Channel(RDFElement):
def __init__(self):
self.desc = ""
class Image(RDFElement):
def __init__(self):
self.url = ""
class NewsParser(ContentHandler):
def __init__(self):
self.nextTag = ""
self.endOf = ""
self.news = []
self.actual = None
def startElement(self, name, attributes):
self.nextTag = name
if name == 'channel':
self.actual = Channel()
elif name == 'item':
self.actual = RDFElement()
elif name == 'image':
self.actual = Image()
def endElement(self,name):
self.endOf = name
self.nextTag = ""
if name in ['channel','image','item']:
self.news.append(self.actual)
def characters(self, content):
if self.nextTag:
if self.nextTag == 'title':
self.actual.title = content
elif self.nextTag == 'link':
self.actual.link = content
elif self.nextTag == 'description':
self.actual.desc = content
elif self.nextTag == 'url':
self.actual.url = content
def endDocument(self):
sys.stdout.write('<html>' + '\n')
sys.stdout.write(' <body>' + '\n')
for item in self.news:
if isinstance(item, Channel):
sys.stdout.write(' <h1>Bienvenido al canal <a href="' + item.link + '">' + item.title + '</a><br>' + '\n')
sys.stdout.write(' ' + item.desc + '<br>\n');
elif isinstance(item, Image):
sys.stdout.write(' <a href="' + item.link + '">' + item.title + '</a>' + '\n')
sys.stdout.write(' <img src="' + item.url + '">' + '\n')
else:
sys.stdout.write(' Nuevo articulo<br>' + '\n')
sys.stdout.write(' <a href="' + item.link + '">' + item.title + '</a>' + '\n')
sys.stdout.write(' </body>' + '\n')
sys.stdout.write('</html>' + '\n')
if __name__ == "__main__":
url = 'http://slashdot.org/slashdot.rdf'
parse(urllib.urlopen(url), NewsParser())
|