Rufen Sie die URL des HTTP-Umleitungsziels in Python ab

Überblick

Quellcode

Speichern Sie den folgenden Inhalt unter dem Dateinamen get_redirect.py.

get_redirect.py


import sys
import urllib.request

#Handler-Klasse, die nicht umleitet
class NoRedirectHandler(urllib.request.HTTPRedirectHandler):
  # HTTPRedirectHandler.redirect_Anfrage überschreiben
  def redirect_request(self, req, fp, code, msg, hdrs, newurl):
    self.newurl = newurl #Halten Sie die Umleitungsziel-URL gedrückt
    return None

#Funktion zum Abrufen der Umleitungsziel-URL
def get_redirect_url(src_url):
  #Legen Sie Handler fest, die nicht umleiten
  no_redirect_handler = NoRedirectHandler()
  opener = urllib.request.build_opener(no_redirect_handler)
  try:
    with opener.open(src_url) as res:
      return None #Es war eine URL, die nicht umgeleitet wurde
  except urllib.error.HTTPError as e:
    if hasattr(no_redirect_handler, "newurl"):
      return no_redirect_handler.newurl #Gibt die Umleitungsziel-URL zurück
    else:
      raise e #Neu werfen, da es sich um eine Ausnahme handelt, die nicht umgeleitet wurde

#Befehlszeilenargumente abrufen
src_url = sys.argv[1]

#Umleitungsziel-URL abrufen
redirect_url = get_redirect_url(src_url)

#Ausgabe-Umleitungsziel-URL ausgeben
if redirect_url is not None:
  print(redirect_url)

Ausführungsbeispiel.

$ python get_redirect.py https://bit.ly/3kmTOkc
https://t.co/yITSBp4ino
$ python get_redirect.py https://t.co/yITSBp4ino
https://qiita.com/niwasawa
$ python get_redirect.py https://qiita.com/niwasawa

Vereinfachte Version

Speichern Sie den folgenden Inhalt unter dem Dateinamen get_redirect.py.

get_redirect.py


import sys
import urllib.request

#Funktion zum Abrufen der Umleitungsziel-URL
def get_redirect_url(src_url):
  with urllib.request.urlopen(src_url) as res:
    url = res.geturl() #Holen Sie sich die endgültige URL
    if src_url == url:
      return None #Nicht umgeleitet, da es mit der angegebenen URL identisch ist
    else:
      return url #Umleitung, da sie sich von der angegebenen URL unterscheidet

#Befehlszeilenargumente abrufen
src_url = sys.argv[1]

#Umleitungsziel-URL abrufen
redirect_url = get_redirect_url(src_url)

#Ausgabe-Umleitungsziel-URL ausgeben
if redirect_url is not None:
  print(redirect_url)

Ausführungsbeispiel. In der vereinfachten Version wird eine Anforderung an die Umleitungsziel-URL gesendet, und bei einer mehrstufigen Umleitung wird die endgültige URL ausgegeben.

$ python get_redirect.py https://bit.ly/3kmTOkc
https://qiita.com/niwasawa
$ python get_redirect.py https://t.co/yITSBp4ino
https://qiita.com/niwasawa
$ python get_redirect.py https://qiita.com/niwasawa

Referenzmaterial

Recommended Posts

Rufen Sie die URL des HTTP-Umleitungsziels in Python ab
Holen Sie sich den Aufrufer einer Funktion in Python
So ermitteln Sie die Anzahl der Stellen in Python
[Python] Ruft die Liste der im Modul definierten Klassen ab
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Skriptpfad in Python
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Ruft den Index jedes Elements der Verwirrungsmatrix in Python ab
Überprüfen Sie das Verhalten des Zerstörers in Python
Überprüfen Sie, ob die URL in Python vorhanden ist
Das Ergebnis der Installation von Python auf Anaconda
[Python] Ermittelt den Rang der Werte in der Liste in aufsteigender / absteigender Reihenfolge
Grundlagen zum Ausführen von NoxPlayer in Python
Auf der Suche nach dem schnellsten FizzBuzz in Python
[Python] Ruft den Zeichencode der Datei ab
Entfernen Sie DICOM-Bilder in Python
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Holen Sie sich den Schlüssel für die Migration von JSON-Daten auf der zweiten Ebene mit Python
Holen Sie sich den Inhalt von Git Diff aus Python
Geben Sie die Anzahl der CPU-Kerne in Python aus
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Holen Sie sich das Wetter in Osaka über Web-API (Python)
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
[Python] Ruft die Skalenbezeichnung der Figur ab / bearbeitet sie
[Python] Holen Sie sich die Hauptthemen von Yahoo News
Passen Sie die Verteilung jeder Gruppe in Python an
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
Kopieren Sie die Liste in Python
Ruft den Fenstertitel des X-Fenstersystems in Python ab
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
[Python] Ruft das Datum der letzten Aktualisierung der Website ab
So erhalten Sie die Dateien im Ordner [Python]
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Die Geschichte des Lesens von HSPICE-Daten in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Ausgabe in Form eines Python-Arrays
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Geben Sie die von Amazon CloudFront signierte URL in Python aus
[Python] Holen Sie sich den Tag (Englisch & Japanisch)
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
der Zen von Python
Holen Sie sich Datum in Python
Abrufen der Unix-Zeit der von JST angegebenen Zeit unabhängig von der Zeitzone des Servers mit Python
Holen Sie sich das letzte Element des Arrays, indem Sie Zeichenfolgen in Python und PHP aufteilen
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
So erhalten Sie den Variablennamen selbst in Python
[Python] Ruft den offiziellen Dateipfad der Verknüpfungsdatei ab (.lnk)
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
[Python] Holen Sie sich die Zahlen im Diagramm mit OCR
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
Crawlen Sie die im Twitter-Tweet enthaltene URL mit Python
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
Mit Python psycopg2 erhalten Sie Ergebnisse im Diktatformat