UnicodeEncodeError con BeautifulSoup 3.1.0.1 y Python 2.5.2
-
19-08-2019 - |
Pregunta
Con BeautifulSoup 3.1.0.1 y Python 2.5.2, y tratando de analizar una página web en francés. Sin embargo, tan pronto como llamo a findAll, aparece el siguiente error:
UnicodeEncodeError: el códec 'ascii' no puede codificar el carácter u '\ xe9' en la posición 1146: el ordinal no está en el rango (128)
A continuación se muestra el código que estoy ejecutando actualmente:
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
¿Alguien tiene una idea de por qué?
¡Gracias!
ACTUALIZACIÓN : como se solicitó, a continuación se muestra el rastreo completo
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)
Solución
Aquí hay otra idea. Su terminal no es capaz de mostrar una cadena Unicode de Python. El intérprete intenta convertirlo a ASCII primero. Debe codificarlo explícitamente antes de imprimir. No sé la semántica exacta de soup.findAll ()
. Pero probablemente sea algo como:
for t in soup.findAll("table"):
print t.encode('latin1')
Si t
realmente es una cadena. Quizás sea solo otro objeto a partir del cual debe construir los datos que desea mostrar.