Я использую следующий код Python для загрузки веб-страниц с серверов со сжатием gzip:
url = "http://www.v-gn.de/wbb/"
import urllib2
request = urllib2.Request(url)
request.add_header('Accept-encoding', 'gzip')
response = urllib2.urlopen(request)
content = response.read()
response.close()
import gzip
from StringIO import StringIO
html = gzip.GzipFile(fileobj=StringIO(content)).read()
Обычно это работает, но для указанного URL происходит сбой с исключением struct.error
.Я получаю аналогичный результат, если я использую wget с заголовком «Accept-encoding».Однако браузеры, похоже, могут распаковать ответ.
Поэтому мой вопрос: есть ли способ заставить мой код Python распаковать HTTP-ответ, не прибегая к отключению сжатия, удалив "Accept-encoding"header?
Для полноты вот строка, которую я использую для wget:
wget --user-agent="Mozilla" --header="Accept-Encoding: gzip,deflate" http://www.v-gn.de/wbb/