Ich versuche, eine HTML-Seite zu parsen, die ich über pyCurl abgerufen habe, aber die pyCurl WRITEFUNCTION gibt die Seite als BYTES und nicht als Zeichenfolge zurück, sodass ich sie nicht mit BeautifulSoup parsen kann.
Gibt es eine Möglichkeit, io.BytesIO in io.StringIO zu konvertieren?
Oder gibt es eine andere Möglichkeit, die HTML-Seite zu analysieren?
Ich verwende Python 3.3.2.
Der Code in der akzeptierten Antwort liest tatsächlich vollständig aus dem Stream zum Decodieren. Unten ist der richtige Weg, einen Stream in einen anderen zu konvertieren, wo die Daten Chunk für Chunk gelesen werden können.
# Initialize a read buffer
input = io.BytesIO(
b'Inital value for read buffer with unicode characters ' +
'ÁÇÊ'.encode('utf-8')
)
wrapper = io.TextIOWrapper(input, encoding='utf-8')
# Read from the buffer
print(wrapper.read())
Ein naiver Ansatz:
# assume bytes_io is a `BytesIO` object
byte_str = bytes_io.read()
# Convert to a "unicode" object
text_obj = byte_str.decode('UTF-8') # Or use the encoding you expect
# Use text_obj how you see fit!
# io.StringIO(text_obj) will get you to a StringIO object if that's what you need
11762900cookie-checkKonvertieren Sie io.BytesIO in io.StringIO, um die HTML-Seite zu analysierenyes
tut der naive Ansatz der Erschöpfung der
BytesIO
und dann baue aStringIO
von der Ausgabe nicht Ihren Zwängen genügen?– Anthony Sottile
4. Juli 2014 um 4:32 Uhr