4 Stimmen

Unicode-Fehler ignorieren

Wenn ich eine Schleife über eine Reihe von URLs laufen lasse, um alle Links (in bestimmten Divs) auf diesen Seiten zu finden, erhalte ich diesen Fehler zurück:

Traceback (most recent call last):
File "file_location", line 38, in <module>
out.writerow(tag['href'])
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in position 0: ordinal not in range(128)

Der Code, den ich im Zusammenhang mit diesem Fehler geschrieben habe, lautet:

out  = csv.writer(open("file_location", "ab"), delimiter=";")
for tag in soup_3.findAll('a', href=True):   
    out.writerow(tag['href'])

Gibt es eine Möglichkeit, dies zu lösen, möglicherweise mit einer if-Anweisung zu ignorieren alle URLs, die Unicode-Fehler haben?

Vielen Dank im Voraus für Ihre Hilfe.

6voto

Wooble Punkte 84533

Sie können den Aufruf der Writerow-Methode in eine try und fangen die Ausnahme auf, um sie zu ignorieren:

for tag in soup_3.findAll('a', href=True):
    try:
        out.writerow(tag['href'])
    except UnicodeEncodeError:
        pass

aber Sie wollen mit ziemlicher Sicherheit eine andere Kodierung als ASCII für Ihre CSV-Datei wählen (utf-8, es sei denn, Sie haben einen sehr guten Grund, etwas anderes zu verwenden), und öffnen Sie sie mit codecs.open() anstelle des eingebauten open .

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