Конвертировать сжатые данные, извлеченные urllib2, в HTML
В настоящее время я использую 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 ответа
Решение
Попробуй это:
import StringIO
data = StringIO.StringIO(data)
import gzip
gzipper = gzip.GzipFile(fileobj=data)
html = gzipper.read()
html
теперь должен держать HTML (распечатайте его, чтобы увидеть). Смотрите здесь для получения дополнительной информации.
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)