Seite 1 von 1

urllib2 liefert Kauderwelsch bei Abfrage des Internet Archiv

Verfasst: Samstag 11. Oktober 2008, 22:12
von CPC6128
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ß

Verfasst: Samstag 11. Oktober 2008, 23:26
von Trundle
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.

Verfasst: Sonntag 12. Oktober 2008, 13:38
von CPC6128
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()