Найти - Пользователи
Полная версия: Python 2.7 , проблема с decode('utf-8')
Начало » Python для новичков » Python 2.7 , проблема с decode('utf-8')
1
fortunadopo
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import urlopen

page = urlopen('http://yasko.by/').read().decode('utf-8')

page2 = urlopen('http://pogoda.yandex.ru/moscow/').read().decode('utf-8')
в строке с page , ошибка “UnicodeDecodeError: ‘utf8’ codec can't decode byte 0xc3 in position 32: invalid continuation byte”, тем не менее в строке с page2 - все нормально… как так получается?, спасибо.
bismigalis
первая страница в cp1251
fortunadopo
А как мне получить слово “Главная” из title на русском языке, а не “\u041e\u0428\u0418\u0411\u041a\u0410”?
fortunadopo
ага, спасибо, я просто запускал скрипт, а потом в консоли набирал
>page
и получал иероглифы, а нужно было
>print page

ещё такой вопрос… и как теперь декодировать страницы, чтобы не падал код, или нужно все время заглядывать в кодировку страницы?
@cckyi_boxxx
как правило в странице имееться следующее :

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

пишете регулярку и кормите ее re.findall()

выглядеть этог будет приблизительно так

import re
encoding = re.findall(r'.*?charset=(.*?).*?' , some_string )[0]

ps: регулярки пишу криво кто может сбацать лучше пульните в топик
o7412369815963
Заюзайте requests, он определяет и декодирует:
r = requests.get('http://ya.ru')
r.text
py.user.next
для третьего
>>> import urllib.request
>>> 
>>> data = urllib.request.urlopen('http://www.yandex.ru')
>>> data.headers.get_content_charset()
'utf-8'
>>> data.headers.get_charsets()
['utf-8']
>>> data.close()
>>>
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