Wenn ich Python-Anfragen verwende, um eine Site zu überprüfen, werde ich wissen, ob die Site mich auf eine andere Seite weiterleitet.

8

Was ich meine ist, wenn ich zu "www.yahoo.com/thispage" gehe, und yahoo hat einen Filter eingerichtet, um / thispage zu / thepageumzuleiten. Wenn also jemand auf diese Seite geht, landet er auf dieser Seite.

Wenn ich httplib / requests / urllib verwende, weiß ich, dass eine Umleitung stattgefunden hat? Welche Fehlerseiten? Einige Websites leiten den Benutzer auf die Seite / error weiter, wenn die Seite nicht gefunden werden kann.

    
iCodeLikeImDrunk 20.11.2012, 21:47
quelle

4 Antworten

13

Mit requests erhalten Sie eine Liste aller Weiterleitungen im Attribut .history des Antwortobjekts. Es gibt eine Python-Liste zurück. Weitere Informationen finden Sie in der Dokumentation .

    
MikeHunter 20.11.2012, 22:03
quelle
9

Um Anfragen von Weiterleitungen zu verhindern, verwenden Sie:

r = requests.get('http://www.yahoo.com/thispage', allow_redirects=False)

Wenn es sich tatsächlich um eine Weiterleitung handelt, können Sie den Zielort für die Weiterleitung in r.headers ['location'] überprüfen.

    
yonilevy 20.11.2012 22:06
quelle
1

Es kommt darauf an, wie sie die Umleitung machen. Der "richtige" Weg besteht darin, einen umgeleiteten HTTP-Statuscode (301/302/303) zurückzugeben. Der "falsche" Weg besteht darin, ein Refresh-Meta-Tag in den HTML-Code einzufügen.

Wenn sie das erste tun, wird requests es transparent behandeln. Beachten Sie, dass bei jeder fehlerhaften Seitenumleitung immer noch ein Fehlerstatuscode (z. B. 404) angezeigt wird, den Sie als response.status_code überprüfen können.

    
katrielalex 20.11.2012 22:05
quelle
1

Die akzeptierte Antwort ist die korrekte erste Option, aber in einigen Fällen, wenn die Seite mit einem Meta-Tag umleitet, wird auch eine kanonische Verbindung angegeben, sobald sie umgeleitet wird. In diesem Beispiel möchte ich versuchen, Ссылка von Wikipedia anzufordern, was eine URL ist, die umleitet.

%Vor%

Ich überprüfe und:

%Vor%

Eine Alternative ist es, die kanonische URL zu ziehen, die hoffentlich das hat, wohin Sie weitergeleitet wurden. (Hinweis: Ich benutze BeautifulSoup auch hier)

%Vor%

Was mit der URL übereinstimmt, zu der Sie in diesem speziellen Fall weitergeleitet werden. Also, um klar zu sein, ist dies eine hässliche zweite Option, aber einen Versuch wert, wenn alles andere fehlschlägt.

    
dlb8685 25.11.2014 04:44
quelle

Tags und Links