Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 12, 2007 19:08:45

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с urllib2

Привет всем.
Есть сайт 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ШЫ▄їъ╪ ит.д.).Что с ним могло случиться ?



Офлайн

#2 Окт. 12, 2007 19:28:10

umup
От:
Зарегистрирован: 2007-07-14
Сообщения: 53
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с urllib2

страница в кодировке ‘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)

Офлайн

#3 Окт. 12, 2007 19:29:52

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с urllib2

у меня все в нормальном виде скачивается при тойже последовательности действий (WindowsXP, Python 2.5.1)

>>>print len(s)
78784



Офлайн

#4 Окт. 15, 2007 11:22:15

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с urllib2

Спасибо, umup. Так работает.
А что за таинственное заклинание ‘\xEF\xBB\xBF’ ? Может это поможет решить проблемы с utf-8 и кирилицей ?



Офлайн

#5 Окт. 15, 2007 11:44:05

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Проблема с urllib2

Про таинственного зверя читать здесь.
http://en.wikipedia.org/wiki/Byte_Order_Mark

Yurietc
Спасибо, umup. Так работает.
Может это поможет решить проблемы с utf-8 и кирилицей ?
Да, в некотором смысле.



Офлайн

#6 Окт. 15, 2007 12:08:13

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Проблема с urllib2

Yurietc
Спасибо, umup. Так работает.
А что за таинственное заклинание ‘\xEF\xBB\xBF’ ? Может это поможет решить проблемы с utf-8 и кирилицей ?
Чтобы легче заклинание было запоминать – это константа BOM_UTF8 из модуля codecs


import codecs
codecs.BOM_UTF8



Офлайн

#7 Окт. 15, 2007 12:12:17

umup
От:
Зарегистрирован: 2007-07-14
Сообщения: 53
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с urllib2

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



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version