Конвертировать сжатые данные, извлеченные urllib2, в HTML - PullRequest
5 голосов
/ 10 ноября 2009

В настоящее время я использую Mechanize для чтения gzipped веб-страницы, как показано ниже:

br = mechanize.Browser()
br.set_handle_gzip(True)
response = br.open(url)
data = response.read()

Интересно, как распаковать сжатые данные, извлеченные urllib2, в текст HTML?

req = urllib2.Request(url)
opener = urllib2.build_opener()
response = opener.open(req)
data = response.read()
if response.info()['content-encoding'] == 'gzip':
    HOW TO DECOMPRESS DATA TO HTML

Ответы [ 2 ]

14 голосов
/ 10 ноября 2009

Попробуйте это:

import StringIO
data = StringIO.StringIO(data)
import gzip
gzipper = gzip.GzipFile(fileobj=data)
html = gzipper.read()

html теперь должен содержать HTML ( Напечатайте его, чтобы увидеть ). См. здесь для получения дополнительной информации.

0 голосов
/ 03 октября 2010
def ungzip(r,b):
    headers = r.info()
    if ('Content-Encoding' in headers.keys() and headers['Content-Encoding']=='gzip') or \
       ('content-encoding' in headers.keys() and headers['content-encoding']=='gzip'):
        import gzip
        gz = gzip.GzipFile(fileobj=r, mode='rb')
        html = gz.read()
        gz.close()
        headers['Content-type'] = 'text/html; charset=utf-8'
        r.set_data(html)
        b.set_response(r)
...