Seite 1 von 1
RSS -> HTML Modul gesucht...
Verfasst: Freitag 19. August 2005, 16:12
von jens
Wo finde ich denn ein einfaches Modul um aus RSS HTML zu generieren? Ich möchte meine PyLucid-Sourceforge-News auf meine Webseite packen. Also ein Modul für PyLucid dafür schreiben...
Verfasst: Freitag 19. August 2005, 16:37
von jens
Verfasst: Freitag 19. August 2005, 16:55
von Leonidas
Was willst du dennn haben? RSS 0.9x, RSS 1.0 oder RSS 2.0? Achtung, diese sind allesammt verschieden!
Vielleicht interessiert die ein
Script von mir

Verfasst: Freitag 19. August 2005, 18:56
von jens
Die Pylucid-News von Sourceforge sind RSS 2.0:
http://sourceforge.net/export/rss2_proj ... _id=146328
Nach dem Artikel zu urteilen reicht es, die RSS Daten einfach ins HTML mit einzufädeln und mit CSS die Tags sinnvoll zu formatieren... Auf die schnelle ist mir das aber nicht gelungen...
Verfasst: Freitag 19. August 2005, 19:13
von Leonidas
Hmm, ich könnte mir eher vorstellen, dass du sowas mit XSLT bewerkstelligen kannst (in (X)HTML wandeln), dann noch mit CSS nachpolieren.
Verfasst: Sonntag 21. August 2005, 12:40
von fs111
Ich denke auch, das XSLT da der richtige Ansatz ist:
http://www.xml.com/pub/a/2003/01/02/tr.html
fs111
Verfasst: Sonntag 21. August 2005, 16:20
von jens
Danke für den Link... Werde ich mir mal in Ruhe anschauen...
Verfasst: Montag 22. August 2005, 15:30
von jens
So....
Man benötigt also
PyXML 
Nur für das einblenden von RSS ein bischen viel zusätzliche Module. Außerdem soll es ja wieder in einer Python CGI Umgebung funktionieren...
Kann man mit Python-Bordmitteln XSLT Verarbeitung vornehmen?
Verfasst: Montag 22. August 2005, 16:41
von jens
Also ich überlege über eine ganze einfache Filterung die RSS Daten in die Webseite "einzukopieren" um die Tags dann per CSS zu Formatieren.
Also ein RSS sieht so aus:
Code: Alles auswählen
<rss version="2.0">
<channel>
<title>SourceForge.net: SF.net Project News: PyLucid</title>
<link>http://sourceforge.net/projects/pylucid/</link>
<description>SF.net Project News: [...]</description>
<copyright>Copyright and [...]</copyright>
<lastBuildDate>Mon, 22 Aug 2005 14:19:49 GMT</lastBuildDate>
<generator>SourceForge.net RSS generator</generator>
<image>
<title>SourceForge.net logo</title>
<url>http://images.sourceforge.net/images/sflogo-88-1.png</url>
<link>http://sourceforge.net/</link>
<width>88</width>
<height>31</height>
<description>The world's largest Open Source software development website</description>
</image>
<item>
<title>Maillist eingerichtet.</title>
<description>Habe die Maillingliste eingerichtet... Somit kann nun jeder, unter http://lists.sourceforge.net/lists/listinfo/pylucid-news sich eintragen. (0 comments)</description>
<author>pylucid@users.sourceforge.net (Jens Diemer)</author>
<link>http://sourceforge.net/forum/forum.php?forum_id=489815</link>
<guid isPermaLink="true">http://sourceforge.net/forum/forum.php?forum_id=489815</guid>
<pubDate>Fri, 19 Aug 2005 14:58:21 GMT</pubDate>
<comments>http://sourceforge.net/forum/forum.php?forum_id=489815</comments>
</item>
<item>
<title>Einrichten...</title>
<description>Nachdem ich neben meiner Homepage http://www.jensdiemer.de/Programmieren/Python/PyLucid eine extra Seite für PyLucid: http://www.pylucid.org eingerichtet hab, startete ich nun hier bei SourceForge ein offizielles Projekt... (0 comments)</description>
<author>pylucid@users.sourceforge.net (Jens Diemer)</author>
<link>http://sourceforge.net/forum/forum.php?forum_id=489612</link>
<guid isPermaLink="true">http://sourceforge.net/forum/forum.php?forum_id=489612</guid>
<pubDate>Fri, 19 Aug 2005 08:31:04 GMT</pubDate>
<comments>http://sourceforge.net/forum/forum.php?forum_id=489612</comments>
</item>
</channel>
</rss>
Mal angekommen ich definiere folgenden Filter:
Code: Alles auswählen
<channel>
<item>
<title></title>
<description></description>
</item>
</channel>
Also ich will nur die Zeilen channel.item.title und chanel.item.description haben... Kann man das mit den Python XML Basis Modulen machen???
Verfasst: Donnerstag 25. August 2005, 11:57
von jens
Hab nun was verblüffend einfaches gefunden, es basiert auf
http://www.xml.com/pub/a/2002/12/18/div ... ?page=last
Code: Alles auswählen
import xml.dom.minidom
import sys,os, urllib
class RSS:
DEFAULT_NAMESPACES = (
None, # RSS 0.91, 0.92, 0.93, 0.94, 2.0
'http://purl.org/rss/1.0/', # RSS 1.0
'http://my.netscape.com/rdf/simple/0.9/' # RSS 0.90
)
DUBLIN_CORE = ('http://purl.org/dc/elements/1.1/',)
def getElementsByTagName( self, node, tagName, possibleNamespaces=DEFAULT_NAMESPACES ):
for namespace in possibleNamespaces:
children = node.getElementsByTagNameNS(namespace, tagName)
if len(children): return children
return []
def node_data( self, node, tagName, possibleNamespaces=DEFAULT_NAMESPACES):
children = self.getElementsByTagName(node, tagName, possibleNamespaces)
node = len(children) and children[0] or None
return node and "".join([child.data.encode("utf_8") for child in node.childNodes]) or None
def get_txt( self, node, tagName, default_txt="" ):
"""
Liefert den Inhalt >tagName< des >node< zurück, ist dieser nicht
vorhanden, wird >default_txt< zurück gegeben.
"""
return self.node_data( node, tagName ) or self.node_data( node, tagName, self.DUBLIN_CORE ) or default_txt
def print_txt( self, node, tagName, print_string ):
"""
Formatierte Ausgabe
"""
item_data = self.get_txt( node, tagName )
if item_data == "":
return
print print_string % {
"tag" : tagName,
"data" : item_data
}
def print_rss( self, url ):
rssDocument = xml.dom.minidom.parse( urllib.urlopen( url ) )
for node in self.getElementsByTagName(rssDocument, 'item'):
print '<ul class="RSS">'
print '<li><h1><a href="%s">' % self.get_txt( node, "link", "#" )
print self.get_txt( node, "title", "<no title>" )
print "</a></h1></li>"
self.print_txt( node, "date", '<li><small>%(data)s</li>' )
self.print_txt( node, "description", '<li>%(data)s</li>' )
print "</ul>"
RSS().print_rss( "http://sourceforge.net/export/rss2_projnews.php?group_id=146328" )
Hab's direkt in PyLucid als Modul eingebaut. SourceCode hier:
http://cvs.sourceforge.net/viewcvs.py/p ... iew=markup
Wie das hinterher auf einer Webseite aussehen kann, ist hier zu sehen:
http://www.pylucid.org/?p=/about/news
http://www.pylucid.org/?p=/Download