Python requests ist eine beliebte Bi­blio­thek, mit der Sie HTTP-Anfragen senden und die Antworten über­prü­fen können. Auch wenn .get() die wich­tigs­te Methode des Moduls ist, gibt es zahl­rei­che weitere Optionen.

Was ist Python requests?

Python requests ist ein Standard, der es Ihnen er­mög­licht, innerhalb der Pro­gram­mier­spra­che HTTP-Anfragen zu senden. Grundlage dafür ist eine über­sicht­li­che und effektive Pro­gramm­schnitt­stel­le, die die Ein­bin­dung von Dritt­an­bie­ter-Features besonders einfach macht. Die Python requests-Bi­blio­thek stellt ver­schie­de­ne Tools zur Verfügung, mit denen Sie HTTP-Anfragen senden und die ent­spre­chen­den Antworten erhalten können. Auch wenn das Python requests-Module weit ver­brei­tet und sehr emp­feh­lens­wert ist, gehört es nicht zur Stan­dard­in­stal­la­ti­on von Python.

Managed Nextcloud by IONOS Cloud
Team­ar­beit in der eigenen Cloud
  • Voll­stän­di­ge Da­ten­sou­ve­rä­ni­tät in deutschen Re­chen­zen­tren
  • Managed Service ohne Ad­mi­nis­tra­ti­ons­auf­wand
  • File-Sharing, Do­ku­men­ten­be­ar­bei­tung & Kom­mu­ni­ka­ti­on

In­stal­la­ti­on und Start der Bi­blio­thek Python requests

Bevor Sie Python requests in­stal­lie­ren, ist es emp­feh­lens­wert, zunächst eine virtuelle Maschine auf­zu­set­zen, in der Sie die Bi­blio­thek be­den­ken­los aus­pro­bie­ren können. Für die In­stal­la­ti­on nutzen Sie dann pip. So sieht der Code aus:

$ python -m pip install requests
bash

Um die Bi­blio­thek nach der er­folg­rei­chen In­stal­la­ti­on zu verwenden, benötigen Sie diesen Code:

import requests
python

Funk­ti­ons­wei­se, Syntax und Methoden

Wie andere ver­gleich­ba­re Tools sendet auch Python requests eine HTTP-Anfrage, die dann bei er­folg­rei­cher Über­mitt­lung eine Antwort erhält. Bei dieser Antwort handelt es sich um ein Objekt, in dem alle wichtigen In­for­ma­tio­nen wie Inhalt, Codierung und Status enthalten sind. Die Syntax für eine solche Anfrage sieht immer fol­gen­der­ma­ßen aus:

requests.methode(url, **kwargs)
python
Hinweis

**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äu­figs­ten verwenden werden, stellt Ihnen Python requests noch weitere Methoden zur Verfügung. Folgende Funk­tio­nen gibt es:

  • .delete(url, **kwargs): Mit .delete() entfernen Sie eine bestimmte Quelle
  • .get(url, parameter=None, **kwargs): Mit .get() fragen Sie In­for­ma­tio­nen von einem Server ab
  • .head(url, **kwargs): Mit .head() fragen Sie ebenfalls eine Antwort von einem Server an, be­schrän­ken sich dabei aber auf den Header
  • .patch(url, data=None, **kwargs): Mit .patch() können Sie die Leis­tungs­fä­hig­keit erhöhen. Es werden damit nur Än­de­run­gen an die Quelle gesendet
  • .post(url, data=None, json=None, **kwargs): Mit .post() über­mit­teln Sie vor allem For­mu­lar­an­ga­ben an einen Server
  • .put(url, data=None, **kwargs): Mit .put() mo­di­fi­zie­ren Sie eine be­stehen­de Quelle und erzeugen neue Daten auf dem Server
  • .request(method, url, **kwargs): Mit .request() senden Sie eine Anfrage mit einer be­stimm­ten Methode an die URL

Beispiel für die Methode .get()

Der Aufbau von .get() ist sehr über­sicht­lich, was Python requests zu einer prak­ti­schen Bi­blio­thek macht. Sie benötigen nicht mehr als die Methode und die URL, die Sie an­spre­chen wollen. Diese wird in An­füh­rungs­zei­chen ge­schrie­ben. So sieht ein der­ar­ti­ger Code bei­spiel­haft aus:

import requests
requests.get("https://beispiel.com")
python

Nun erhalten Sie eine Antwort von Ihrem Ziel­ser­ver. Zur Ver­an­schau­li­chung 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")
python

Status-Codes abfragen

Die ein­fachs­te Antwort, die Sie auf eine Anfrage erhalten, ist ein HTTP-Status-Code. Dieser zeigt Ihnen, ob Ihre Anfrage er­folg­reich war oder nicht. Der Status-Code ist drei­stel­lig. Es gibt zahl­rei­che Varianten, die Sie über den Verlauf Ihrer Anfrage un­ter­rich­ten. Die wich­tigs­ten Ka­te­go­rien sind diese:

  • 1XX: Enthält wei­ter­füh­ren­de In­for­ma­tio­nen
  • 2XX: Be­schei­nigt eine er­folg­rei­che Anfrage
  • 3XX: In­for­miert Sie über eine Umleitung Ihrer Anfrage
  • 4XX: Meldet einen Fehler auf der Client-Seite
  • 5XX: Meldet einen Fehler auf der Server-Seite

Zu den be­kann­tes­ten Status-Codes gehören „200 – OK“ (für eine er­folg­rei­che Anfrage) und „404 – Not Found“ (falls die an­ge­for­der­ten 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
python

War die Anfrage er­folg­reich erhalten Sie diese Ausgabe:

200
python

Zur besseren Dar­stel­lung 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.")
python

Header einsehen mit Python requests

Im Header einer HTTP-Antwort sind zahl­rei­che nützliche In­for­ma­tio­nen enthalten. Unter anderem finden Sie hier den mit­ge­sen­de­ten Datentyp, ein Zeitlimit für die Zwi­schen­spei­che­rung und weitere Angaben. Mit der Bi­blio­thek 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
python

In 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 spe­zi­fi­zie­ren. Möchten Sie zum Beispiel mehr über den Datentyp erfahren, ist dies die richtige Eingabe:

response.headers["content-type"]
python

Auf den Payload zugreifen

Das Da­ten­pa­ket, das zwischen Server und Client ver­schickt wird, ist auch als „Payload“ bekannt. Es befindet sich im Body oder Körper der Antwort. Mit response können Sie auf die dort ent­hal­te­nen In­for­ma­tio­nen zugreifen. Für eine Dar­stel­lung in Bytes ist diese Anweisung die passende:

import requests
response = requests.get("https://beispiel.com")
response.content
type(response.content)
python

Möchten Sie die so ge­sam­mel­ten In­for­ma­tio­nen in einen String umwandeln, nutzen Sie diesen Code:

response.text
type(response.text)
python

Python requests wird die Ver­schlüs­se­lung dem Header entnehmen. Al­ter­na­tiv weisen Sie das System an, eine andere Methode zu nutzen. Dafür ist dieser Code ein Beispiel:

response.encoding = "utf-8"
response.text
python

Fort­schritt über­prü­fen

Wenn Sie eine Anfrage senden, wird diese von Python requests vor­be­rei­tet, um un­lieb­sa­me Fehler zu vermeiden. Dabei wird unter anderem der Header überprüft. Den Fort­schritt dieser Methode können Sie mithilfe der Funktion .request über­prü­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)
python

So erhalten Sie In­for­ma­tio­nen zum Payload, dem Header, der URL und vielen weiteren Punkten.

Echt­heits­prü­fung via Pythonrequests-Module

Der Parameter auth wird in Python requests genutzt, um eine Au­then­ti­fi­zie­rung an den Server zu senden. Dieser kann eine Echt­heits­prü­fung durch­füh­ren und so kon­trol­lie­ren, mit wem er ei­gent­lich in­ter­agiert. Um die Über­prü­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"])
python

SSL-Zer­ti­fi­kat nutzen

Grund­sätz­lich ist die Nutzung eines SSL-Zer­ti­fi­kats sinnvoll, um Da­ten­ver­lust und un­ge­woll­te Eingriffe zu ver­hin­dern. Python requests bietet diese Option stan­dard­mä­ßig an. Möchten Sie die ge­gen­sei­ti­ge Ve­ri­fi­ka­ti­on al­ler­dings für eine Anfrage un­ter­bin­den, können Sie SSL mit diesem Code aus­schal­ten:

import requests
requests.get("https://beispiel.com", verify=False)
python

Sie erhalten dann al­ler­dings eine aus­drück­li­che Warn­mel­dung.

Timeout mit Python requests in­iti­ie­ren

Mit Python requests können Sie unter anderem auch die maximale Zeit für eine Antwort be­schrän­ken. Stan­dard­mä­ßig wird der Client ohne Ein­schrän­kung auf eine Reaktion warten. Bleibt diese aus, können sich Anfragen stauen und die Leistung leidet darunter. Mit dem Parameter timeout ver­hin­dern Sie dieses Problem. Im folgenden Code weisen wir Python requests an, die Anfrage nach zwei Sekunden ab­zu­bre­chen:

requests.get("https://beispiel.com", timeout=2)
python
Tipp

Deployen Sie Ihre Website oder App direkt via GitHub: Mit Deploy Now von IONOS erhalten Sie die optimale Lösung für Single-Page-Ap­pli­ka­tio­nen und statische Websites glei­cher­ma­ßen. Wählen Sie den passenden Tarif für Ihre Zwecke und pro­fi­tie­ren Sie von einem schnel­le­ren Setup, op­ti­mier­ten Workflows und einem sicheren Design!

Zum Hauptmenü