Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2013 17:36:09

fortunadopo
Зарегистрирован: 2013-08-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7 , проблема с decode('utf-8')

#!/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 - все нормально… как так получается?, спасибо.

Офлайн

#2 Ноя. 11, 2013 18:07:29

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Python 2.7 , проблема с decode('utf-8')

первая страница в cp1251

Офлайн

#3 Ноя. 11, 2013 18:10:24

fortunadopo
Зарегистрирован: 2013-08-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7 , проблема с decode('utf-8')

А как мне получить слово “Главная” из title на русском языке, а не “\u041e\u0428\u0418\u0411\u041a\u0410”?

Офлайн

#4 Ноя. 11, 2013 18:23:15

fortunadopo
Зарегистрирован: 2013-08-15
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7 , проблема с decode('utf-8')

ага, спасибо, я просто запускал скрипт, а потом в консоли набирал
>page
и получал иероглифы, а нужно было
>print page

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

Офлайн

#5 Ноя. 11, 2013 19:14:50

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

Python 2.7 , проблема с decode('utf-8')

как правило в странице имееться следующее :

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

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

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

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

ps: регулярки пишу криво кто может сбацать лучше пульните в топик



Отредактировано @cckyi_boxxx (Ноя. 11, 2013 19:17:38)

Офлайн

#6 Ноя. 11, 2013 21:56:09

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Python 2.7 , проблема с decode('utf-8')

Заюзайте requests, он определяет и декодирует:

r = requests.get('http://ya.ru')
r.text

Офлайн

#7 Ноя. 12, 2013 20:18:57

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

Python 2.7 , проблема с decode('utf-8')

для третьего

>>> 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()
>>>



Отредактировано py.user.next (Ноя. 12, 2013 20:21:19)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version