Форум сайта python.su
0
Всем привет! При написании парсера столкнулся с такой проблемой
from urllib.request import urlopen url = 'http://ya.ru/' data = urlopen(url).read() print(data.decode('utf-8', errors='ignore'))
print(b'\xa9SPAM'.decode('utf-8', errors='ignore'))
Офлайн
0
westyeast,
Полагаю, что в юникоде есть какой-то символ, который не может быть выведен в консоль или в файл.
Можно попробовать сделать вывод в кодировке UTF-8 или другой. Например, так:
open('1.txt', 'wb').write(data.decode('utf8', errors='ignore').encode('utf8', errors='ignore'))Отредактировано tibs (Янв. 3, 2014 15:27:04)
Офлайн
857
в третьем питоне можно определять кодировку страницы с помощью метода
>>> import urllib.request >>> data = urllib.request.urlopen('http://python.su') >>> data.headers.get_content_charset() 'utf-8' >>>
westyeastэто к методу .decode() отношения не имеет
UnicodeEncodeError
>>> b'\xb8'.decode('utf-8') Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 0: invalid start byte >>>
Отредактировано py.user.next (Янв. 4, 2014 10:52:52)
Офлайн