Avec BeautifulSoup 3.1.0.1 et Python 2.5.2, et en essayant d'analyser une page Web en français. Cependant, dès que je l'appelle findAll, je reçois l'erreur suivante:UnicodeEncodeError avec BeautifulSoup 3.1.0.1 et Python 2.5.2
UnicodeEncodeError: codec 'ascii' ne peut pas encoder le caractère u '\ XE9' en position 1146: ordinal dans la plage (128)
Ci-dessous le code que je suis actuellement en cours d'exécution:
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
est-ce que quelqu'un a une idée pourquoi?
Merci!
MISE À JOUR: Comme resquested, ci-dessous est le retraçage complet
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)
Cela fonctionne! : D Mais qu'entendez-vous par "Votre terminal n'est pas capable d'afficher une chaîne Unicode à partir de Python.". J'exécute mon script dans IDLE (Python Shell). Cela devrait fonctionner, n'est-ce pas? – Martin
Un terminal doit indiquer à l'interpréteur Python quel jeu de caractères il utilise. Habituellement, cela est fait à travers une variable d'environnement. Je ne sais pas comment cela est géré par IDLE. –
impression repr (t) est également utile. C'est généralement une bonne idée de repr() que vous produisez pour le débogage afin que vous puissiez voir exactement le type et les caractères de contrôle ou les bits de contrôle qui s'y trouvent, ainsi que de ne pas ajouter de fausses exceptions à votre code de débogage . – bobince