Форум сайта python.su
Привет всем.
Есть сайт http://genuinedrafting.blogspot.com/2007/04/going-public.html.
Сохраняю его на диск примерно так :
>>> import urllib2
>>> s = urllib2.urlopen('http://genuinedrafting.blogspot.com/2007/04/going-public.html').read()
>>> f=open('D:\\tmp.html', ‘w’)
>>> f.write(s)
>>> f.close()
>>> print s
ヒ
>>> print len(s)
17878
Сайт приходит в совершенно не читабельный вид (Л����� ┤VmS█8■\ КmШЫ▄їъ╪ ит.д.).Что с ним могло случиться ?
Офлайн
страница в кодировке ‘utf-8’, поэтому перед записью содержимого нужно записать сигнатуру utf-8 - write('\xEF\xBB\xBF').
файл лучше открывать в режиме ‘wb’.
то есть :
open('D:\\tmp.html', ‘wb’).write('\xEF\xBB\xBF' + urllib2.urlopen('http://genuinedrafting.blogspot.com/2007/04/going-public.html').read())
Отредактировано (Окт. 12, 2007 19:33:42)
Офлайн
у меня все в нормальном виде скачивается при тойже последовательности действий (WindowsXP, Python 2.5.1)
>>>print len(s)
78784
Офлайн
Спасибо, umup. Так работает.
А что за таинственное заклинание ‘\xEF\xBB\xBF’ ? Может это поможет решить проблемы с utf-8 и кирилицей ?
Офлайн
Про таинственного зверя читать здесь.
http://en.wikipedia.org/wiki/Byte_Order_Mark
YurietcДа, в некотором смысле.
Спасибо, umup. Так работает.
Может это поможет решить проблемы с utf-8 и кирилицей ?
Офлайн
YurietcЧтобы легче заклинание было запоминать – это константа BOM_UTF8 из модуля codecs
Спасибо, umup. Так работает.
А что за таинственное заклинание ‘\xEF\xBB\xBF’ ? Может это поможет решить проблемы с utf-8 и кирилицей ?
Офлайн
проблема могла возникнуть из-за использования текстового доступа к файлу (f=open('D:\\tmp.html', ‘w’)) вместо бинарного ‘wb’.
'\xEF\xBB\xBF' - это заголовок (сигнатура) файла в кодировке utf-8, наверно необязательный, броузер должен и без нее определить кодировку из заголовка - charset=utf-8
Офлайн