Найти - Пользователи
Полная версия: Не правельна кодировка в urllib
Начало » Центр помощи » Не правельна кодировка в urllib
1
mavel
Добрый день, помогите пожалуйста разобратся с кодировкой при парсинге сайта. У меня есть такой код

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>
py.user.next
Во-первых, кодировку надо брать из http-заголовка Content-Type специальным методом.
>>> import urllib.request
>>> 
>>> data = urllib.request.urlopen('http://www.yandex.ru')
>>> data.info().get_charsets()
['utf-8']
>>>

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

Поставь линукс, там консоль в utf-8 выводит.
mavel
py.user.next
Во-первых, кодировку надо брать из http-заголовка Content-Type специальным методом.
Спасибо, заработало))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB