Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2013 22:38:41

Isaev
Зарегистрирован: 2013-04-14
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с gzip

Доброго времени суток
Получаю данные от сервера, в заголовке

Accept-Encoding:gzip,deflate,sdch
Значит данные приходят в gzip как я понял? (или просто zlib надо использовать?)
данные всегда с сигнатурой “78 DA”(compression extreme) по идее это zlib должен быть… или у gzip тоже такая сигнатура?
читаю в файл, потом пытаюсь перекодировать. в python чайник
полазил по просторам сети, нашёл что-то типа(python 3):
import io,gzip
a=open('test.txt','rb')
z=a.read()
a.close()
zbuf = io.StringIO(z)
zfile = gzip.GzipFile(mode='rb', fileobj=zbuf)
zfile.read()
zfile.close()
f=open('out.txt','wb')
f.write(zbuf)
f.close()
но оно не работает (пока), т.к. мало понимаю как работает StringIO вообще и зачем он тут
да и вообще то ли я делаю?

для примера входной файл “78 DA 33 34 32 36 31 35 33 B7 00 00 07 40 01 A5” бинарный конечно
на выходе должна быть строка “12345678”

Офлайн

#2 Апрель 14, 2013 23:09:12

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Работа с gzip

Каким образом ты данные от сервера получаешь?



Офлайн

#3 Апрель 15, 2013 00:05:31

Isaev
Зарегистрирован: 2013-04-14
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с gzip

plusplus, я незаморачивался с получением их через python, просто скачал с браузера
Пример файла в аттаче
заголовок посмотрел через HTTPAnalyser (это от файла в из аттача)

Host: www.xxxx.ru
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Accept: */*
Referer: http://www.xxxx.ru/get/form
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: много куков

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 14 Apr 2013 21:08:58 GMT
Content-Type: application/octet-stream
Content-Length: 307
Last-Modified: Thu, 11 Apr 2013 15:22:18 GMT
Connection: keep-alive
Expires: Mon, 14 Apr 2014 21:08:58 GMT
Cache-Control: max-age=31536000
Accept-Ranges: bytes

начало всегда с сигнатуры “78 DA”, данные разные, файлов много, надо способ заглянуть внутрь с целью анализа

Отредактировано Isaev (Апрель 15, 2013 00:15:05)

Прикреплённый файлы:
attachment vers.compressed (307 байт)

Офлайн

#4 Апрель 15, 2013 00:28:48

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Работа с gzip

zlib.decompress(s)
на входе бинарная строка, на выходе распакованная. Ничего сложного, в документации это написано.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Апрель 15, 2013 02:40:10

Isaev
Зарегистрирован: 2013-04-14
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с gzip

JOHN_16, вот спасибо, действительно все просто
заработало!

Отредактировано Isaev (Апрель 15, 2013 02:40:51)

Офлайн

#6 Апрель 15, 2013 04:37:51

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Работа с gzip

Isaev
ну раз я вам помог то и плюсик в карму поставьте)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version