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.
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 .
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.
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.
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.
Tags und Links python python-requests httplib