Mensa-Speiseplan parsen
Eine Website, die ich sehr gern mag, ist iMensa - der Speiseplan der verschiedenen Augsburger Unis für die aktuelle und die nächste Woche. Leider funktioniert die Seite zur Zeit nicht.
Der Grund dafür ist so einfach wie dämlich: Die Seite, auf der das Studentenwerk selbst die Speisepläne für Desktops anbietet, hat ganz katastrophales HTML und wird wohl händisch aktualisiert, von PowerPoint, oder noch irgendwas schlimmeres. Für den normalen Anwender ist es nicht so schlimm, schließlich sieht die Seite dennoch immer gleich aus. Möchte man diese Seite jedoch für mobile Endgeräte (Handys, iPods, etc) auch anbieten, muss man dazu die Seite des Studentenwerks parsen. Die Formatierung geschieht mit Tabellen und ist auch nicht hierarchisch angelegt. Die bisherige Herangehensweise bei iMensa verlässt sich anscheinend auf das jeweils aktuelle Markup (Breite von <td>s oder so), jetzt hat sich dieses aber wohl geändert und iMensa geht auch nicht mehr.
Nachdem ich selbst mit lxml.etree und BeautifulSoup versucht habe, halbwegs brauchbar das Markup zu parsen, hab ich’s kurz drauf gleich wieder gelassen, das klappt einfach nicht. Stattdessen habe ich mir einen Screenscraper programmiert, der die aktuellen Mensaprogramme ausliest und mit RegEx analysiert. Vielleicht hält das ja länger.
Wer sich für das Script interessiert, kann es sich hier ansehen. Es ist in Python geschrieben und hat als Dokumentation lediglich seine Docstrings. Besonders kompliziert ist es allerdings nicht.