urllib2 liefert Kauderwelsch bei Abfrage des Internet Archiv

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
CPC6128
User
Beiträge: 2
Registriert: Samstag 11. Oktober 2008, 21:50

Hallo,

ich habe ein Problem mit urllib2, bei dem ich nicht weiter weiß. Wenn ich versuche, die Ergebnisseite (zb http://web.archive.org/web/*/http://www.python-forum.de) des Internet Archives aufzurufen, bekomme ich nur wilde Sonderzeichen ausgegeben. Alle andere Seiten auf archive.org wie auch andere Internetseiten liefern den erwarteten Quellcode der Seite.
Dieses Verhalten zeigt sich seit zwei Wochen, also scheint vermutlich etwas am Server umgestellt worden zu sein, da ich an Python nichts geändert habe. Wenn ich im Script urllib2 durch urllib ersetze, bekomme ich den richtigen Quellcode.

Hier das (Standard)-Skript:

Code: Alles auswählen

import urllib2

url = 'http://web.archive.org/web/*/http://www.python-forum.de'

f = urllib2.urlopen(url)
text = f.read()
print text
Weiß jemand Rat?

Danke und Gruß
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

web.archive.org scheint die Antwort mit gzip zu komprimieren, sobald ein `Accept-Encoding`-Header bei der HTTP-Anfrage mitgeschickt wird, und die urllib2 schickt im Gegensatz zur urllib einen `Accept-Encoding`-Header mit.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
CPC6128
User
Beiträge: 2
Registriert: Samstag 11. Oktober 2008, 21:50

Danke, jetzt funktionierts.

Für die Akten:

Code: Alles auswählen

import StringIO
compressedstream = StringIO.StringIO(text)   
import gzip
gzipper = gzip.GzipFile(fileobj=compressedstream)      
text = gzipper.read()  
Antworten