Schneller MiniRDFparser

Code-Stücke können hier veröffentlicht werden.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Schneller MiniRDFparser

Beitragvon Milan » Donnerstag 23. Dezember 2004, 12:31

Hi, ich bin gerade dabei meinen alten Quellcode für ein Nachrichtentelegramm zu überholen und portabel für andere RDF-Dienste zu machen, deswegen hab ich mal einen kleinen Miniparser geschrieben. Argumente sind eine RDF oder RSS Datei mit den Nachrichten und ein Dictionary mit den zu parsenden Tagnamen und ihren Standartwerten bei nichtvorkommen. Das ganze sieht dann so aus (mit Beispiel):

Code: Alles auswählen

from xml.dom.minidom import parse as makeDomObjFromFile, parseString as makeDomObjFromString

def parseRDFobj(dom_obj,extracttags={"title":"no title","link":None,"description":"no description"},encoding=None):
    for item in dom_obj.getElementsByTagName("item"):
        extracted_item={}
        for tag in extracttags:
            try:
                text=""
                for node in item.getElementsByTagName(tag)[0].childNodes:
                    if node.nodeType == node.TEXT_NODE:
                        text += node.data
                assert text != ""
            except (IndexError,AssertionError):
                extracted_item[tag]=extracttags[tag]
            else:
                if encoding:
                    text=text.encode(encoding)
                extracted_item[tag]=text
        yield extracted_item

if __name__ == "__main__":
    import urllib
    dom_obj=makeDomObjFromFile( urllib.urlopen("http://www.tagesschau.de/newsticker.rdf") )
    for item in parseRDFobj(dom_obj,encoding="latin-1"):
        print item

Vorher hat das ganze mit RE gearbeitet, aber so ist es flexibler :D .
Zuletzt geändert von Milan am Freitag 21. Januar 2005, 16:42, insgesamt 3-mal geändert.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Donnerstag 23. Dezember 2004, 21:46

hab noch einen weiteren Parameter encoding hinzugefügt, somit wird der Inhalt von Unicode gleich mit umgewandelt, falls erwünscht (standartmäßig abgeschaltet). Eine Anwendung des ganzen ist zum Beispiel dieses CGI-Script.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder