zwei Fragen zu FancyURLopener

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
SaltyWater
User
Beiträge: 10
Registriert: Montag 10. Dezember 2007, 11:37

Moin.

Ich hab da mal zwei Fragen.

Kann man FancyURLopener eigentlich auch dazu bringen dem <meta http-equiv="refresh"...> zu folgen oder muss man das selber basteln??

Und dann nimmt FancyURLopener ja bei HTTP-Response 30x auch die neue "Location:" "to fetch the actual URL". Das ist einerseits zwar schön, dass ich trotz eines Fehler bekomme, was ich haben möchte, aber wie mache ich das denn am besten, dass ich jetzt auch von dieser neuen URL erfahre bevor es für meine alte irgendwann nur noch die 404-Seite gibt?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

SaltyWater hat geschrieben:Kann man FancyURLopener eigentlich auch dazu bringen dem <meta http-equiv="refresh"...> zu folgen oder muss man das selber basteln??
Soweit ich weiß nicht, denn das erfordert, dass man den Inhalt der Seite parst und das erfordert wiederrum einen HTML-Parser, was sich außerhalb des von der urllib abgedeckten befindet.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
SaltyWater
User
Beiträge: 10
Registriert: Montag 10. Dezember 2007, 11:37

yo, danke. lag ja eigentlich auf der hand. wäre ja sonst wohl auch default wie das übernehmen der neuen location von 30x-response.

ist allerdings auch leicht mit umzugehen.

um die neuen locations aus den 30x-responses zu bekommen muss man aber wohl alles selber machen mit HTTPConnection, oder?
Nicht_zu_definieren
User
Beiträge: 21
Registriert: Freitag 21. April 2006, 17:01
Kontaktdaten:

Spricht etwas dagegen urllib.URLopener statt urllib.FancyURLopener zu verwenden um die 30x status meldungen abzufangen?

EDIT:

Code: Alles auswählen

import urllib

opener = urllib.URLopener()
try:
    opener.open('http://google.com')
except IOError, e:
    print e[3].values()
SaltyWater
User
Beiträge: 10
Registriert: Montag 10. Dezember 2007, 11:37

hmm.

mal testen. in der dkou steht if connection cannot be made... auf server-ebene ist 30x o.ä. ja auch ne connection. nur das man halt nicht bekommt, was man haben will. na ja.

danke
Antworten