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)
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top