Форум сайта python.su
0
#!/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 - все нормально… как так получается?, спасибо.
Офлайн
47
первая страница в cp1251
Офлайн
0
А как мне получить слово “Главная” из title на русском языке, а не “\u041e\u0428\u0418\u0411\u041a\u0410”?
Офлайн
0
ага, спасибо, я просто запускал скрипт, а потом в консоли набирал
>page
и получал иероглифы, а нужно было
>print page
ещё такой вопрос… и как теперь декодировать страницы, чтобы не падал код, или нужно все время заглядывать в кодировку страницы?
Офлайн
14
как правило в странице имееться следующее :
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
import re encoding = re.findall(r'.*?charset=(.*?).*?' , some_string )[0]
Отредактировано @cckyi_boxxx (Ноя. 11, 2013 19:17:38)
Офлайн
32
Заюзайте requests, он определяет и декодирует:
r = requests.get('http://ya.ru') r.text
Офлайн
857
для третьего
>>> 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)
Офлайн