3

我正在尝试做的事情: 我从数据库中获取 uris 列表并下载它们,删除停用词并计算这些词在网页中出现的频率,然后尝试保存在 mongodb 中。

问题: 当我尝试将结果保存在数据库中时,我收到错误 bson.errors.invalidDocument: the document must be a valid utf-8

它似乎与代码 '\xc3someotherstrangewords'、'\xe2something' 有关,当我处理网页时,我尝试删除标点符号,但我无法删除重音,因为我会得到一个错误的词。

我已经尝试过 的我已经尝试通过我尝试过的网页的标题识别字符编码使用chardet

利用 re.compile(r"[^a-zA-Z]") 和/或 unicode(variable,'ascii', 'ignore');
这对非英语语言不利,因为它们消除了重音。

我想知道的是:
有人知道如何识别字符并翻译成正确的单词/编码吗?
例如从网页 '\xe2' 获取这个并翻译成 'â'

(英语不是我的第一语言,所以请原谅我)编辑:如果有人想查看源代码

4

1 回答 1

3

找出网站的正确字符编码并不容易,因为标题中的信息可能是错误的。BeautifulSoup在猜测字符编码方面做得很好,并自动将其解码为 Unicode。

from bs4 import BeautifulSoup
import urllib

url = 'http://www.google.de'
fh = urllib.urlopen(url)
html = fh.read()
soup = BeautifulSoup(html)

# text is a Unicode string 
text = soup.body.get_text()
# encoded_text is a utf-8 string that you can store in mongo
encoded_text = text.encode('utf-8')

另请参阅此问题的答案。

于 2013-02-25T19:02:59.347 回答