Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 20, 2015 11:27:16

mavel
Зарегистрирован: 2015-06-20
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Не правельна кодировка в urllib

Добрый день, помогите пожалуйста разобратся с кодировкой при парсинге сайта. У меня есть такой код

from urllib.request import urlopen
URL = 'http://www.proglive.ru/courses'
f = urlopen(URL)
list_html = f.read().decode('utf-8')
print(list_html)

мета у страницы ютф-8 но пайтон все равно выдает такую ошибку:
Traceback (most recent call last):
File “parser.py”, line 26, in <module> main()
File “parser.py”, line 17, in main parse_courses()
File “parser.py”, line 13, in parse_courses print(list html)
File “c:\Python34\lib\encodings\cp866.py”, line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)
UnicodeEncodeError: ‘charmap’ codec can't encode character ‘\xab’ in position 15818: character maps to <undefined>

Офлайн

#2 Июнь 20, 2015 11:53:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Не правельна кодировка в urllib

Во-первых, кодировку надо брать из http-заголовка Content-Type специальным методом.

>>> import urllib.request
>>> 
>>> data = urllib.request.urlopen('http://www.yandex.ru')
>>> data.info().get_charsets()
['utf-8']
>>>

Во-вторых, виндовая консоль выводит в древней однобайтовой кодировке, в которой просто нет представления для многих символов, которые обычно представляются несколькими байтами в многобайтовых кодировках.

Поставь линукс, там консоль в utf-8 выводит.



Отредактировано py.user.next (Июнь 20, 2015 11:54:17)

Офлайн

#3 Июнь 20, 2015 14:30:14

mavel
Зарегистрирован: 2015-06-20
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Не правельна кодировка в urllib

py.user.next
Во-первых, кодировку надо брать из http-заголовка Content-Type специальным методом.
Спасибо, заработало))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version