SGMLLib in Python 3.0.1

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

Hallo zusammen
Ich arbeite an dem Buch "Dive into Python"

http://diveintopython.org/html_processing/index.html

Im 8. Kapitel wird ein HTMLParser gebastelt, allerdings mit Python < 3.0. Dazu wird sgmllib importiert.
Ich arbeite aber mit Python 3.0.1, was muss ich da ändern, damit es funktioniert? Ich habe das ganze Skript auch mit dem 2to3.py tool gebürstet, aber sgmllib wird nicht geändert.
[url=http://www.proandkon.com]proandkon.com[/url]
BlackJack

@mzh: `sgmllib` gibt's anscheinend nicht mehr. War aber auch relativ sinnlos, weil die Bibliothek weder SGML komplett abgedeckt hat, noch mit nicht-wohlgeformtem HTML zurecht kam.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BeautifulSoup ist daher in Version 3.1 (also der ersten mit Support für Python 3) auf HTMLParser migriert, siehe Having problems with Beautiful Soup 3.1.0?. Generell klingt das stark nach "nutzt html5lib oder findet einen Maintainer für BeautifulSoup". Naja, immerhin scheint es ja zu funktionieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

ok, also was müsste ich jetzt anstelle von

Code: Alles auswählen

from sgmllib import SGMLParser
eingeben? Ich möchte eigentlich bloss das Beispiel aus dem Buch zum Laufen bringen, damit ich es nachvollziehen kann. Plus: wieso wird in diesem Fall nichts von 2to3 unternommen?
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hast du das nicht verstanden? Die SGML-Bibliothek wird offenbar nicht mehr standardmäßig mitgeliefert. Du kannst es dir aber vielleicht nachträglich installieren.
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

@snafu: Ja, ey locker bleiben...
Bis jetzt ist es durchaus auch vorgekommen, dass man halt anstelle von z.B.

Code: Alles auswählen

xrange()
range()
schreibt. Deshalb dachte ich, es gibt hier eine äquivalente Alternative. Und sonst, nein, ich habe es nicht verstanden, ich hoffe du nimmst mir das nicht allzu übel.
Wenn ich aber Leonidas richtig verstehe, dann ist wohl html5lib gemeint.
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
snafu
User
Beiträge: 6736
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Nein, Leonidas spricht davon, dass die `sgmllib` früher die Grundlage für den Parser `BeautifulSoup` war und der sich durch den Wegfall eine neue Grundlage suchen musste. So gesehen hat das nicht wirklich was mit deiner Frage zu tun. Der Kommentar mit `html5lib` bezieht sich dabei auf den Link. Da heult sich der Autor nämlich so ein bißchen mit dem Unterton aus, dass er eigentlich gar keine Lust mehr auf sein Projekt hat und das nur noch wegen der großen Nutzerbasis von BS weitermachen würde. Lieber wäre es ihm aber anscheinend, wenn die Leute zu anderen Parsern (z.B. `html5lib`) wechseln würden oder sich jemand bereit erklärt, das Projekt zu übernehmen bzw ihm die wohl doch recht umfangreichen größeren Codeänderungen zukommen zu lassen.
Antworten