如何从文档中获取西里尔字符串

时间:2011-02-24 21:16:59

标签: python parsing

如何从文档中获取西里尔字符串?

我已经停止了代码:

import urllib
from BeautifulSoup import BeautifulSoup

page = urllib.urlopen("http://habrahabr.ru/")
soup = BeautifulSoup(page.read())
for topic in soup.findAll(True, 'topic'):
    print topic
    print
raw_input()

网站上有西里尔文字,但python显示错误的字符。

对于这个问题的任何帮助,我都会非常有帮助。

PS。

我改变了

soup = BeautifulSoup(page.read()) 

soup = BeautifulSoup(page.read(), fromEncoding="utf-8") 

仍然没有结果......

3 个答案:

答案 0 :(得分:3)

HTML页面上的数据以UTF-8编码。您似乎将它打印到控制台,其中sys.stdout.encoding是cp1251。这说明了你所看到的垃圾。

以下是使用IDLE检查第一个主题的前8个字节的结果:

>>> raw = '\xd0\x90\xd0\xbb\xd0\xb3\xd0\xbe'
>>> print raw.decode('utf8')
Алго
>>> print raw.decode('cp1251')
Алго
>>> 

答案 1 :(得分:0)

感谢您的帮助。

我用这段代码解决了问题:

print str(topic).decode('utf8')

答案 2 :(得分:0)

在django中我解决了这个问题:

from django.utils.encoding import force_unicode
print ("%s" % force_unicode(topic, encoding='utf-8', strings_only=False, errors='strict'))

所以你可以从django

获取这个功能