Mit HTMLParser in Python 3.2
Ich habe mit HTML-Parser Verschrottung von Daten aus Webseiten und stripping html-Codierung dabei. Ich bin mir bewusst, dass verschiedene Module wie Schöne Suppe, aber beschlossen zu gehen auf dem Weg der nicht in Abhängigkeit von "außen" - Module. Es ist ein code, den code, den Sie zusammen durch die Eloff: Strip HTML aus strings in Python
from HTMLParser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
self.reset()
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = MLStripper()
s.feed(html)
return s.get_data()
Funktioniert es in Python 3.1. Allerdings habe ich vor kurzem aktualisiert, um Python 3.2.x und gefunden haben, bekomme ich Fehler in Bezug auf die HTML-Parser code wie oben geschrieben.
Mein Erster Fehler Punkte auf der Zeile:
s.feed(html)
... und der Fehler sagt ...
AttributeError: 'MLStripper' object has no attribute 'strict'
So, nach ein bisschen recherche, füge ich "strict= "True" in der obersten Zeile, so dass es...
class MLStripper(HTMLParser, strict=True)
Allerdings bekomme ich die neuen Fehler von:
TypeError: type() takes 1 or 3 arguments
Sehen, was passieren würde, entfernte ich den "selbst" - argument und Links in der "strict= "True"... gab die Fehlermeldung:
NameError: global name 'self' is not defined
... und ich habe "ich vermute, auf Vermutungen" Gefühl.
Ich habe keine Ahnung, was das Dritte argument in der class MLStripper(HTMLParser)
Linie wäre, nach self
und strict=True
; Forschung nicht werfen jede Erleuchtung.
InformationsquelleAutor MilesNielsen | 2012-06-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist Unterklassen
HTMLParser
, aber sind Sie nicht aufrufen__init__
Methode. Sie müssen fügen Sie eine Zeile zu Ihrem__init__
Methode:Auch für Python 3, die import-Zeile ist:
Durch diese änderungen ein einfaches Beispiel funktioniert. Ändern Sie nicht die
class
Linie, dass die nicht verwandt werden.Dies löst auch das AttributeError: 'HTMLTagRemover' - Objekt hat kein Attribut 'convert_charrefs' super().__init__() wurde NICHT benötigt Python2 für mich, wurde aber in Python ist3 - danke
InformationsquelleAutor Thomas K