Найти - Пользователи
Полная версия: Проблема с urllib2
Начало » Web » Проблема с urllib2
1
Yurietc
Привет всем.
Есть сайт 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ШЫ▄їъ╪ ит.д.).Что с ним могло случиться ?
umup
страница в кодировке ‘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())
shiza
у меня все в нормальном виде скачивается при тойже последовательности действий (WindowsXP, Python 2.5.1)

>>>print len(s)
78784
Yurietc
Спасибо, umup. Так работает.
А что за таинственное заклинание ‘\xEF\xBB\xBF’ ? Может это поможет решить проблемы с utf-8 и кирилицей ?
ZAN
Про таинственного зверя читать здесь.
http://en.wikipedia.org/wiki/Byte_Order_Mark
Yurietc
Спасибо, umup. Так работает.
Может это поможет решить проблемы с utf-8 и кирилицей ?
Да, в некотором смысле.
bialix
Yurietc
Спасибо, umup. Так работает.
А что за таинственное заклинание ‘\xEF\xBB\xBF’ ? Может это поможет решить проблемы с utf-8 и кирилицей ?
Чтобы легче заклинание было запоминать – это константа BOM_UTF8 из модуля codecs


import codecs
codecs.BOM_UTF8
umup
проблема могла возникнуть из-за использования текстового доступа к файлу (f=open('D:\\tmp.html', ‘w’)) вместо бинарного ‘wb’.
'\xEF\xBB\xBF' - это заголовок (сигнатура) файла в кодировке utf-8, наверно необязательный, броузер должен и без нее определить кодировку из заголовка - charset=utf-8
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