In dieser Lektion wollen wir das tun. Wir werden herausfinden, wie Werte verschiedener HTML -Tags extrahiert werden können und auch die Standardfunktionalität dieses Moduls überschreiben, um eine eigene Logik hinzuzufügen. Wir werden dies mit dem tun Htmlparser Klasse in Python in html.Parser Modul. Lassen Sie uns den Code in Aktion sehen.
Betrachten Sie die HTMLParser -Klasse
Um den HTML -Text in Python zu analysieren, können wir verwenden Htmlparser Klasse in html.Parser Modul. Schauen wir uns die Dfinition der Klasse für die an Htmlparser Klasse:
Klasse HTML.Parser.HtmlParser (*, convert_charrefs = true)
Der convert_charrefs Field, wenn auf True festgelegt wird, wird alle Zeichenreferenzen in ihre Unicode -Äquivalente konvertiert. Nur der Skript/Stil Elemente werden nicht konvertiert. Jetzt werden wir versuchen, jede Funktion auch für diese Klasse zu verstehen, um besser zu verstehen, was jede Funktion macht.
Def handle_startendtag (Selbst, Tag, Attrs):
selbst.Handle_StartTag (Tag, Attrs)
selbst.Handle_endtag (Tag)
Def Handle_Startag (Selbst, Tag, Attrs):
passieren
Def Handle_endtag (Selbst, Tag):
passieren
Def Handle_Charref (Selbst, Name):
passieren
Def Handle_entityRef (Selbst, Name):
passieren
Def handle_data (Selbst, Daten):
passieren
Def Handle_Comment (Selbst, Daten):
passieren
Def handle_pi (Selbst, Daten):
passieren
Def handle_decl (self, decl):
passieren
Unterklasse der HTMLParser -Klasse
In diesem Abschnitt werden wir die HTMLParser-Klasse subklassen und einige der Funktionen ansehen, die aufgerufen werden, wenn HTML-Daten an die Klasseninstanz übergeben werden. Schreiben wir ein einfaches Skript, das all das ausführt:
von html.Parser import HTMLParser
Klasse LinuxHTMLParser (HTMLParser):
Def Handle_Startag (Selbst, Tag, Attrs):
print ("Start -Tag aufgetaucht:", Tag)
Def Handle_endtag (Selbst, Tag):
print ("End -Tag aufgetaucht:", Tag)
Def handle_data (Selbst, Daten):
print ("Daten gefunden:", Daten)
Parser = LinuxhtmlParser ())
Parser.füttern("
''Python HTML Parsing -Modul
'))
Hier ist, was wir mit diesem Befehl zurückbekommen:
Python HtmlParser -Unterklasse
HtmlParser -Funktionen
In diesem Abschnitt werden wir mit verschiedenen Funktionen der HTMLParser -Klasse zusammenarbeiten und die Funktionalität der einzelnen von diesen betrachten:
von html.Parser import HTMLParser
von html.Entitäten importieren name2CodePoint
Klasse LinuxHint_Parse (htmlparser):
Def Handle_Startag (Selbst, Tag, Attrs):
print ("Start Tag:", Tag)
für Attr in Attrs:
print ("attr:", attr)
Def Handle_endtag (Selbst, Tag):
print ("Ende Tag:", Tag)
Def handle_data (Selbst, Daten):
print ("Daten:", Daten)
Def Handle_Comment (Selbst, Daten):
print ("Kommentar:", Daten)
Def Handle_entityRef (Selbst, Name):
c = chr (name2CodePoint [Name])
print ("Namen Ent:", C)
Def Handle_Charref (Selbst, Name):
Wenn Name.starten ('x'):
c = chr (int (name [1:], 16))
anders:
c = chr (int (name))
print ("num ent:", c)
Def Handle_decl (Selbst, Daten):
print ("dekl:", Daten)
Parser = LinuxHint_Parse ()
Lassen Sie uns bei verschiedenen Aufrufen separate HTML -Daten in diese Instanz einfügen und sehen, welche Ausgabe diese Aufrufe generieren. Wir werden mit einem einfachen beginnen DocType String:
Parser.füttern(' ')
Hier ist, was wir mit diesem Anruf zurückbekommen:
DocType String
Versuchen wir nun ein Bild -Tag und sehen Sie, welche Daten es extrahiert:
Parser.füttern('')
Hier ist, was wir mit diesem Anruf zurückbekommen:
HtmlParser Bild -Tag
Versuchen wir als nächstes, wie sich das Skript -Tag mit Python -Funktionen verhält:
Parser.füttern(''
'Alarm("LinuxHint Python"); ')
Parser.feed ('#python color: grün')
Parser.feed ('#python color: grün')
Hier ist, was wir mit diesem Anruf zurückbekommen:
Skript -Tag in HTMLParser
Schließlich geben wir Kommentare auch an den Abschnitt HTMLParser weiter:
Parser.füttern(''
"Dh spezifischer Inhalt")
Hier ist, was wir mit diesem Anruf zurückbekommen:
Kommentare analysieren
Abschluss
In dieser Lektion haben wir uns angesehen, wie wir HTML mithilfe der Python -eigenen HTMLParser -Klasse ohne andere Bibliothek analysieren können. Wir können den Code leicht ändern, um die Quelle der HTML -Daten in einen HTTP -Client zu ändern.
Lesen Sie hier mehr Python -basierte Beiträge.