546 Stimmen

UnicodeEncodeError: Der Codec 'charmap' kann Zeichen nicht encoden

Ich versuche, eine Website zu scrapen, aber es gibt mir einen Fehler.

Ich benutze den folgenden Code:

import urllib.request
from bs4 import BeautifulSoup

get = urllib.request.urlopen("https://www.website.com/")
html = get.read()

soup = BeautifulSoup(html)

Und ich bekomme den folgenden Fehler:

File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 70924-70950: character maps to 

Was kann ich tun, um das zu beheben?

-1voto

Karim Sherif Punkte 399

Wenn Sie Windows verwenden, versuchen Sie encoding='latin1', encoding='iso-8859-1' oder encoding='cp1252' zu übergeben Beispiel:

csv_data = pd.read_csv(csvpath,encoding='iso-8859-1')
print(print(soup.encode('iso-8859-1')))

-2voto

RazerJs Punkte 164

Ich habe meinen Fehler behoben, indem ich .content.decode("utf-8") zu meiner Antwort hinzugefügt habe... frühere Antworten auf diese Frage, wie z.B. das Hinzufügen von .encode("utf-8") am Ende, funktionieren nicht gut für mich, weil ich in meinem Code .find_all() verwenden musste, nachdem ich meinen Encoding-Fehler behoben hatte...

Der Code wird sein:

import Anfrage
from bs4 import BeautifulSoup

get = Anfrage.get("https://www.website.com/")
html = get.content.decode("utf-8")
soup = BeautifulSoup(html, "html.parser")
#dein Code
soup.find_all(name="h3")

-2voto

javakam Punkte 107

Fügen Sie das Folgende oben in Ihr Skript ein:

# Fix UnicodeEncodeError: 'charmap' codec can't encode characters
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

Obwohl die direkte Kodierung von sys.stdout einige Probleme lösen kann, gibt es einige Nachteile, es ist nicht die beste Praxis.

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