Как получить кириллическую строку из документа - PullRequest
0 голосов
/ 25 февраля 2011

Как получить кириллическую строку из документа?

У меня есть следующий код:

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 ]

3 голосов
/ 25 февраля 2011

Данные на странице HTML кодируются в UTF-8. Похоже, что вы печатаете его на своей консоли, где sys.stdout.encoding - cp1251 Это объясняет мусор, который вы видите.

Вот результаты проверки первых 8 байтов первой темы с использованием IDLE:

>>> raw = '\xd0\x90\xd0\xbb\xd0\xb3\xd0\xbe'
>>> print raw.decode('utf8')
Алго
>>> print raw.decode('cp1251')
Алго
>>> 
0 голосов
/ 25 февраля 2011

в django я решил это так:

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

, чтобы вы могли получить эту функцию из django

0 голосов
/ 25 февраля 2011

Спасибо за помощь.

Я решаю проблему с этим кодом:

print str(topic).decode('utf8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...