Python requests: HTTP-Anfragen mit Python senden
Python requests
ist eine beliebte Bibliothek, mit der Sie HTTP-Anfragen senden und die Antworten überprüfen können. Auch wenn .get()
die wichtigste Methode des Moduls ist, gibt es zahlreiche weitere Optionen.
Was ist Python requests
?
Python requests
ist ein Standard, der es Ihnen ermöglicht, innerhalb der Programmiersprache HTTP-Anfragen zu senden. Grundlage dafür ist eine übersichtliche und effektive Programmschnittstelle, die die Einbindung von Drittanbieter-Features besonders einfach macht. Die Python requests
-Bibliothek stellt verschiedene Tools zur Verfügung, mit denen Sie HTTP-Anfragen senden und die entsprechenden Antworten erhalten können. Auch wenn das Python requests
-Module weit verbreitet und sehr empfehlenswert ist, gehört es nicht zur Standardinstallation von Python.
- Vollständige Datensouveränität in deutschen Rechenzentren
- Managed Service ohne Administrationsaufwand
- File-Sharing, Dokumentenbearbeitung & Kommunikation
Installation und Start der Bibliothek Python requests
Bevor Sie Python requests
installieren, ist es empfehlenswert, zunächst eine virtuelle Maschine aufzusetzen, in der Sie die Bibliothek bedenkenlos ausprobieren können. Für die Installation nutzen Sie dann pip
. So sieht der Code aus:
$ python -m pip install requests
bashUm die Bibliothek nach der erfolgreichen Installation zu verwenden, benötigen Sie diesen Code:
import requests
pythonFunktionsweise, Syntax und Methoden
Wie andere vergleichbare Tools sendet auch Python requests
eine HTTP-Anfrage, die dann bei erfolgreicher Übermittlung eine Antwort erhält. Bei dieser Antwort handelt es sich um ein Objekt, in dem alle wichtigen Informationen wie Inhalt, Codierung und Status enthalten sind. Die Syntax für eine solche Anfrage sieht immer folgendermaßen aus:
requests.methode(url, **kwargs)
python**kwargs
steht für optionale Methoden, die Sie an Methoden wie headers
, files
oder cookies
übergeben können.
Auch wenn .get()
die Funktion ist, die Sie am häufigsten verwenden werden, stellt Ihnen Python requests noch weitere Methoden zur Verfügung. Folgende Funktionen gibt es:
-
.delete(url, **kwargs)
: Mit.delete()
entfernen Sie eine bestimmte Quelle -
.get(url, parameter=None, **kwargs)
: Mit.get()
fragen Sie Informationen von einem Server ab -
.head(url, **kwargs)
: Mit.head()
fragen Sie ebenfalls eine Antwort von einem Server an, beschränken sich dabei aber auf den Header -
.patch(url, data=None, **kwargs)
: Mit.patch()
können Sie die Leistungsfähigkeit erhöhen. Es werden damit nur Änderungen an die Quelle gesendet -
.post(url, data=None, json=None, **kwargs)
: Mit.post()
übermitteln Sie vor allem Formularangaben an einen Server -
.put(url, data=None, **kwargs)
: Mit.put()
modifizieren Sie eine bestehende Quelle und erzeugen neue Daten auf dem Server -
.request(method, url, **kwargs)
: Mit.request()
senden Sie eine Anfrage mit einer bestimmten Methode an die URL
Beispiel für die Methode .get()
Der Aufbau von .get()
ist sehr übersichtlich, was Python requests
zu einer praktischen Bibliothek macht. Sie benötigen nicht mehr als die Methode und die URL, die Sie ansprechen wollen. Diese wird in Anführungszeichen geschrieben. So sieht ein derartiger Code beispielhaft aus:
import requests
requests.get("https://beispiel.com")
pythonNun erhalten Sie eine Antwort von Ihrem Zielserver. Zur Veranschaulichung können Sie sich diese auch in einer Variablen anzeigen lassen. Für unser Beispiel sähe das so aus:
import requests
response = requests.get("https://beispiel.com")
pythonStatus-Codes abfragen
Die einfachste Antwort, die Sie auf eine Anfrage erhalten, ist ein HTTP-Status-Code. Dieser zeigt Ihnen, ob Ihre Anfrage erfolgreich war oder nicht. Der Status-Code ist dreistellig. Es gibt zahlreiche Varianten, die Sie über den Verlauf Ihrer Anfrage unterrichten. Die wichtigsten Kategorien sind diese:
- 1XX: Enthält weiterführende Informationen
- 2XX: Bescheinigt eine erfolgreiche Anfrage
- 3XX: Informiert Sie über eine Umleitung Ihrer Anfrage
- 4XX: Meldet einen Fehler auf der Client-Seite
- 5XX: Meldet einen Fehler auf der Server-Seite
Zu den bekanntesten Status-Codes gehören „200 – OK“ (für eine erfolgreiche Anfrage) und „404 – Not Found“ (falls die angeforderten Daten auf dem Server nicht gefunden wurden).
Nach Ihrer Anfrage über Python requests
können Sie mit .status_code
den Status abfragen. Dafür nutzen Sie diesen Code:
response.status_code
pythonWar die Anfrage erfolgreich erhalten Sie diese Ausgabe:
200
pythonZur besseren Darstellung eignet sich auch der folgende Code:
if response.status_code == 200:
print("Die Anfrage war erfolgreich.")
elif response.status_code == 404:
print("Die Anfrage war nicht erfolgreich.")
pythonHeader einsehen mit Python requests
Im Header einer HTTP-Antwort sind zahlreiche nützliche Informationen enthalten. Unter anderem finden Sie hier den mitgesendeten Datentyp, ein Zeitlimit für die Zwischenspeicherung und weitere Angaben. Mit der Bibliothek Python requests
können Sie sich den Header auch einfach anzeigen lassen. Dafür führen Sie zunächst die Funktion .get()
und danach .headers
aus:
import requests
response = requests.get("https://beispiel.com")
response.headers
pythonIn der Ausgabe erhalten Sie dadurch ein Objekt, in dem die Werte aus dem Header enthalten sind. Diese können Sie auch einzeln abfragen, indem Sie den Befehl spezifizieren. Möchten Sie zum Beispiel mehr über den Datentyp erfahren, ist dies die richtige Eingabe:
response.headers["content-type"]
pythonAuf den Payload zugreifen
Das Datenpaket, das zwischen Server und Client verschickt wird, ist auch als „Payload“ bekannt. Es befindet sich im Body oder Körper der Antwort. Mit response
können Sie auf die dort enthaltenen Informationen zugreifen. Für eine Darstellung in Bytes ist diese Anweisung die passende:
import requests
response = requests.get("https://beispiel.com")
response.content
type(response.content)
pythonMöchten Sie die so gesammelten Informationen in einen String umwandeln, nutzen Sie diesen Code:
response.text
type(response.text)
pythonPython requests
wird die Verschlüsselung dem Header entnehmen. Alternativ weisen Sie das System an, eine andere Methode zu nutzen. Dafür ist dieser Code ein Beispiel:
response.encoding = "utf-8"
response.text
pythonFortschritt überprüfen
Wenn Sie eine Anfrage senden, wird diese von Python requests
vorbereitet, um unliebsame Fehler zu vermeiden. Dabei wird unter anderem der Header überprüft. Den Fortschritt dieser Methode können Sie mithilfe der Funktion .request
überprüfen. Dafür verwenden Sie diesen Code:
import requests
response = requests.post("https://beispiel.com", json={"key": "value"})
print(response.request.headers["content-type"])
print(response.request.url)
print(response.request.body)
pythonSo erhalten Sie Informationen zum Payload, dem Header, der URL und vielen weiteren Punkten.
Echtheitsprüfung via Pythonrequests
-Module
Der Parameter auth
wird in Python requests
genutzt, um eine Authentifizierung an den Server zu senden. Dieser kann eine Echtheitsprüfung durchführen und so kontrollieren, mit wem er eigentlich interagiert. Um die Überprüfung zu nutzen, wenden Sie einen Code wie diesen an:
import requests
from requests.auth import HTTPBasicAuth
response = requests.get("https://ihre_seite.com/basic-auth/user/passwd",
auth=HTTPBasicAuth("user", "passwd"))
print(response.status_code)
print(response.request.headers["Authorization"])
pythonSSL-Zertifikat nutzen
Grundsätzlich ist die Nutzung eines SSL-Zertifikats sinnvoll, um Datenverlust und ungewollte Eingriffe zu verhindern. Python requests
bietet diese Option standardmäßig an. Möchten Sie die gegenseitige Verifikation allerdings für eine Anfrage unterbinden, können Sie SSL mit diesem Code ausschalten:
import requests
requests.get("https://beispiel.com", verify=False)
pythonSie erhalten dann allerdings eine ausdrückliche Warnmeldung.
Timeout mit Python requests
initiieren
Mit Python requests
können Sie unter anderem auch die maximale Zeit für eine Antwort beschränken. Standardmäßig wird der Client ohne Einschränkung auf eine Reaktion warten. Bleibt diese aus, können sich Anfragen stauen und die Leistung leidet darunter. Mit dem Parameter timeout
verhindern Sie dieses Problem. Im folgenden Code weisen wir Python requests
an, die Anfrage nach zwei Sekunden abzubrechen:
requests.get("https://beispiel.com", timeout=2)
pythonDeployen Sie Ihre Website oder App direkt via GitHub: Mit Deploy Now von IONOS erhalten Sie die optimale Lösung für Single-Page-Applikationen und statische Websites gleichermaßen. Wählen Sie den passenden Tarif für Ihre Zwecke und profitieren Sie von einem schnelleren Setup, optimierten Workflows und einem sicheren Design!