5

使用 BeautifulSoup 3.1.0.1 和 Python 2.5.2,并尝试解析法语网页。但是,一旦我调用 findAll,我就会收到以下错误:

UnicodeEncodeError:“ascii”编解码器无法在位置 1146 编码字符 u'\xe9':序数不在范围内(128)

以下是我目前正在运行的代码:

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

有人知道为什么吗?

谢谢!

更新:根据要求,以下是完整的追溯

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)
4

1 回答 1

11

这是另一个想法。您的终端无法显示来自 Python 的 unicode 字符串。解释器首先尝试将其转换为 ASCII。您应该在打印之前对其进行显式编码。我不知道soup.findAll(). 但它可能是这样的:

for t in  soup.findAll("table"):
    print t.encode('latin1')

如果t真的是一个字符串。也许它只是另一个对象,您必须从中构建要显示的数据。

于 2009-01-20T22:24:20.747 回答