5 Stimmen

Analyse von HTML-Tags mit Python

Ich habe eine URL erhalten und möchte den Inhalt des -Tags von der URL extrahieren. Ich benutze Python3. Ich bin auf sgmllib gestoßen, aber es ist nicht für Python3 verfügbar.

Kann mir jemand dabei bitte helfen? Kann ich HTMLParser dafür verwenden?

Hier ist, was ich versucht habe:

import urllib.request
f=urllib.request.urlopen("URL")
s=f.read()

from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
    def handle_data(self, data):
        print("Einige Daten gefunden:", data)

parser = MyHTMLParser()
parser.feed(s)

Dies gibt mir einen Fehler: TypeError: Kann 'bytes'-Objekt nicht implizit in 'str' umwandeln

10voto

pycoder112358 Punkte 875

Um den TypeError zu beheben, ändern Sie die Zeile #3 zu

s = str(f.read())

Die Webseite, die Sie erhalten, wird in Form von Bytes zurückgegeben, und Sie müssen die Bytes in einen String umwandeln, um sie dem Parser zuzuführen.

4voto

RanRag Punkte 47023

Wenn Sie sich Ihre s Variable ansehen, ist ihr Typ byte.

>>> type(s)

und wenn Sie sich Parser.feed anschauen, benötigt es einen String oder Unicode als Argument. Also tun Sie dies

>>> x = s.decode('utf-8')
>>> type(x)

>>> parser.feed(x)

oder tun Sie x = str(s).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X