site de Fabien Torre


Source de acteurs-parser.py

1: #!/usr/bin/python 2: # -*- coding: utf-8 -*- 3: 4: 5: from xml.sax import ContentHandler,make_parser 6: 7: import sys 8: 9: 10: class ActorsHandler(ContentHandler): 11: 12: 13: 14: def startDocument(self): 15: "ce que l'on fait au début du document" 16: 17: print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' 18: print '<html xmlns="http://www.w3.org/1999/xhtml">' 19: print '<head>' 20: print '<title>Acteurs</title>' 21: print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' 22: print '<link rel="stylesheet" href="acteurs.css" />' 23: print '</head>' 24: print '<body>' 25: print '<h1>Mes acteurs préférés</h1>' 26: 27: 28: 29: 30: 31: def endDocument(self): 32: "ce que l'on fait à la fin du document" 33: 34: print '</body>' 35: print '</html>' 36: 37: 38: 39: 40: 41: def startElement(self, name, attrs): 42: "ce que l'on fait pour chaque balise ouvrante" 43: 44: if name=="prenom": 45: print '<h2>', 46: elif name=="biographie": 47: print '</table>' 48: print '<h3>Biographie</h3>' 49: elif name=="p": 50: print '<p>' 51: elif name=="refacteur": 52: print '<strong>', 53: elif name=="film": 54: print '<em>', 55: elif name=="annee": 56: print '<b>', 57: elif name=="nationalite": 58: print '<tr><th>Nationalité</th><td>', 59: elif name=="naissance": 60: print '<tr><th>Naissance</th><td>', 61: elif name=="site": 62: print '<tr><th>Site web</th><td><a href="',attrs['url'],'">',attrs['url'],'</a></td></tr>', 63: elif name=="photo": 64: print '<tr><th>Photo</th><td><img src="',attrs['source'],'" alt="',attrs['alt'],'" /></td></tr>', 65: 66: 67: 68: 69: 70: 71: def endElement(self, name): 72: "ce que l'on fait pour chaque balise fermante" 73: 74: if name=="nom": 75: print '</h2>' 76: print '<h3>Fiche signalétique</h3>' 77: print '<table>' 78: elif name=="p": 79: print '</p>' 80: elif name=="refacteur": 81: print '</strong>', 82: elif name=="film": 83: print '</em>', 84: elif name=="annee": 85: print '</b>', 86: elif name=="nationalite" or name=="naissance": 87: print '</td></tr>' 88: 89: 90: 91: 92: 93: def characters(self, content): 94: "ce que l'on fait pour le texte" 95: 96: print content.encode("utf-8"), 97: 98: 99: 100: 101: # Parsing d'un fichier d'acteurs 102: 103: fh = ActorsHandler() 104: 105: parser = make_parser() 106: 107: parser.setContentHandler(fh) 108: 109: parser.parse(sys.argv[1]) # on parse le fichier donné en argument 110: 111:
Fabien Torre Valid HTML5! Valid CSS!
site de Fabien Torre, université de Lille