Eu só quero mostrar como solicitar a um servidor uma representação compactada de um recurso.
Neste exemplo específico, quero baixar o formato compactado da página inicial do Google.
A primeira coisa que tenho que fazer é definir o cabeçalho da minha solicitação e declarar que desejo uma representação compactada do recurso que estou pedindo (pensando de forma REST). Portanto, tenho que adicionar a representação gzip em meu campo de cabeçalho ‘Aceitar codificação’.
Então, quando receberei minha resposta, tenho que esvaziar o corpo da minha resposta. Se você olhar meu código, estou verificando se o corpo da resposta está realmente compactado ou não. Isso ocorre porque o servidor pode não ser capaz de fornecer a representação compactada do recurso que estou solicitando. Nesse caso, entregarei diretamente o corpo da resposta.
import urllib2
from StringIO import StringIO
import gzip
request= urllib2.Request('http://www.goolge.com')
request.add_header('Accept-encoding', 'gzip,deflate')
response= opener.open(request)
if response.info().get('Content-Encoding') == 'gzip':
buffer = StringIO( response.read())
deflatedContent = gzip.GzipFile(fileobj=buffer)
return deflatedContent.read()
else:
return response.read()