UnicodeEncodeError mit BeautifulSoup 3.1.0.1 und Python 2.5.2
-
19-08-2019 - |
Frage
Mit BeautifulSoup 3.1.0.1 und Python 2.5.2, und zu versuchen, eine Webseite auf Französisch zu analysieren. Doch sobald ich findAll nennen, bekomme ich folgende Fehlermeldung:
UnicodeEncodeError: 'ASCII' codec Zeichen nicht kodieren, können u '\ xe9' in Position 1146: ordinal nicht im Bereich (128)
Unten ist der Code ich derzeit ausgeführt wird:
import urllib2
from BeautifulSoup import BeautifulSoup
page = urllib2.urlopen("http://fr.encarta.msn.com/encyclopedia_761561798/Paris.html")
soup = BeautifulSoup(page, fromEncoding="latin1")
r = soup.findAll("table")
print r
Hat jemand eine Idee, warum?
Danke!
UPDATE : Wie resquested, unten ist die vollständige Traceback
Traceback (most recent call last):
File "[...]\test.py", line 6, in <module>
print r
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1146-1147: ordinal not in range(128)
Lösung
Hier ist eine andere Idee. Das Terminal ist nicht in der Lage einen Unicode-String aus Python darstellen kann. Der Interpreter versucht es zuerst in ASCII zu konvertieren. Sie sollten es explizit kodieren vor dem Druck. Ich weiß nicht, die genaue Semantik von soup.findAll()
. Aber es ist wohl so etwas wie:
for t in soup.findAll("table"):
print t.encode('latin1')
Wenn t
wirklich eine Zeichenfolge ist. Vielleicht ist es nur ein weiteres Objekt, von dem Sie die Daten erstellen, die Sie anzeigen möchten.