HTTPConnection und Accept-Encoding gzip,deflate

07/05/2010 - 11:10 von Albert Hermeling | Report spam
Guten Morgen,

bevor ich meine Frage formuliere hier das Programm das den Fehler erzeugt:

header = {'Accept-Charset': 'ISO-8859-1,UTF-8;q=0.5,*;q=0.9',
'Host': 'de.wikipedia.org',
'Accept-Language': 'de-de,de',
'Accept-Encoding': 'gzip,deflate',
'Cache-Control': 'no',
'Connection': 'keep-alive',
'Keep-Alive': 300,
'Accept': 'text/html, */*'
}

path = "/wiki/Alchemie"

def h():
conn = HTTPConnection(header["Host"])
conn.request("HEAD", path, None, header)
response = conn.getresponse()
data1 = response.read()
print "HEAD", response.getheaders()
print "HEAD", len(data1)
conn.request("GET", path, None, header)
response = conn.getresponse()
data2 = response.read()
dekom = zlib.decompress(data2)
print "GET", response.getheaders()
print "GET", len(data2)
print "GET", len(dekom)
response.close()
return dekom

Laut meines headers möchte ich die Daten komprimiert haben ('Accept-
Encoding': 'gzip,deflate',) was der Apache bei wikipedia auch macht
('content-encoding', 'gzip'), versuche ich jetzt die Daten mit
zlib.decompress(data2) zu entpacken bekomme ich folgenden Fehler angezeigt:

Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
g = h()
File "<pyshell#33>", line 11, in h
dekom = zlib.decompress(data2)
error: Error -3 while decompressing data: incorrect header check

Hat jemand eine Idee woran das liegen könnte? Wenn ich den Komprimierten
String in eine Datei schreibe, kann ich diese ohne Probleme mit Python
Mitteln (gzip) öffnen und entpacken. Das entpacken funktioniert auch mit
externen Programmen anstandslos.

Ich sage schon mal danke im vor raus

Albert
 

Lesen sie die antworten

#1 Thomas Rachel
07/05/2010 - 11:24 | Warnen spam
Am 07.05.2010 11:10, schrieb Albert Hermeling:

Laut meines headers möchte ich die Daten komprimiert haben ('Accept-
Encoding': 'gzip,deflate',) was der Apache bei wikipedia auch macht
('content-encoding', 'gzip'), versuche ich jetzt die Daten mit
zlib.decompress(data2) zu entpacken bekomme ich folgenden Fehler angezeigt:

Traceback (most recent call last):
File "<pyshell#35>", line 1, in<module>
g = h()
File "<pyshell#33>", line 11, in h
dekom = zlib.decompress(data2)
error: Error -3 while decompressing data: incorrect header check

Hat jemand eine Idee woran das liegen könnte?



gzip != zlib.

Ersetz mal

| data2 = response.read()
| dekom = zlib.decompress(data2)

durch (sinngemàß)

| dekom = gzip.open(fileobj=response).read()

.

Ist jetzt aber ein Schnellschuß - die genaue Syntax müßtest Du evtl.
ausprobieren. Jedenfalls verwendet gzip zwar die zlib, baut aber noch
einen Header drumrum...


Thomas

Ähnliche fragen