ubuntuusers.de

Requests

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

requests.webp Das Python-Modul requests 🇬🇧 ist eine Bibliothek zum Senden von HTTP-Anfragen ("Requests") sowie Aufbereitung der empfangenen Antworten. Auch wenn es Alternativen gibt, ist requests im Python-Umfeld sehr populär und wird viel genutzt. Dies liegt unter anderem daran, dass das Modul sehr ausführlich dokumentiert, funktionsreich und einfach zu nutzen ist.

Installation

Paketquellen

Das Modul ist normalerweise in der Standardinstallation von Python enthalten, kann ansonsten aber über das Paket

  • python3-requests

Befehl zum Installieren der Pakete:

sudo apt-get install python3-requests 

Oder mit apturl installieren, Link: apt://python3-requests

installiert werden[1].

via pip

Wird eine aktuellere / andere Version als die aus den Paketquellen benötigt, kann das Modul mithilfe des Python-Paketmanagers pip installiert werden:

Der Python Paketmanager pip stellt häufig aktuellere Versionen von Programmen als in den Paketquellen bereit. Folgendermaßen lässt sich das Programm darüber installieren:

pip3 install requests       # Programm wird nur für den aktuellen Nutzer installiert  

Hinweis!

Fremdsoftware kann das System gefährden.

Benutzung

Das Schema zur Benutzung von requests innerhalb von Python Skripten oder dem interaktiven Interpreter ist wie folgt: man führt den Befehl requests.HTTP-BEFEHL(URL, [OPTIONEN] aus und erhält ein Response-Objekt zurück, was die Antwort auf den Requests enthält. requests kennt alle gängigen HTTP-Befehle, also GET, OPTIONS, HEAD, POST, PUT, PATCH und DELETE.

Um requests zu nutzen muss man das Modul zuerst importieren:

1
>>> import requests

GET-Request

Die einfachste Form eines GET-Request mit requests funktioniert wie folgt:

1
2
3
>>> response = requests.get('https://httpbin.org')
>>> response
<Response [200]>

Ruft man das Response-Objekt auf (oder gibt es mit print(response) aus), wird der Statuscode 🇬🇧 zurückgegeben, hier also 200(= "OK").

Das Response-Objekt hat eine ganze Reihe von Attributen, über die man sich z.B. den Header, das Encoding oder den Inhalt der Antwort ausgeben lassen kann:

1
2
3
4
5
6
>>> response.headers
{'Date': 'Sun, 11 Dec 2022 14:45:06 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '9593', 'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true'}
>>> response.encoding
'utf-8'
>>> response.text
'<!DOCTYPE html>\n<html lang="en">\n\n<head>\n...'

Das Response-Objekt kennt noch eine ganze Reiher weiterer Attribute und Methoden, welche in der Dokumentation 🇬🇧 aufgeführt sind.

Seite / API mit JSON-Antwort abfragen

Ruft man mit requests eine Seite / API ab, die die Antwort als JSON 🇬🇧 zurückliefert, kann man auf die Antwort direkt mit der json() Methode des Response-Objekts zugreifen:

1
2
3
>>> response = requests.get('https://dummyjson.com/products/1')
>>> response.json()
{'id': 1, 'title': 'iPhone 9', 'description': '...'}

POST-Request

Möchte man mit requests eine POST-Request absetzen, muss man dem Aufruf die Daten für den POST-Request, auch "Payload" genannten, mitgeben:

1
2
3
4
5
6
7
8
>>> response = requests.post('http://httpbin.org/post', data=payload)
>>> response.text
...
{"form": {
    "answer": "42", 
    "foo": "bar"\n  },
}
...

Authentifizierung

requests unterstützt auch die Abfrage von Seiten, die Authentifizierung verlangen. Die einfachste Form namens Basic Auth 🇬🇧 kann einem GET-Request direkt mitgegeben werden:

1
2
3
>>> requests.get('https://httpbin.org/basic-auth/user/pass', auth=('user', 'pass'))
>>> response.text
'{\n  "authenticated": true, \n  "user": "user"\n}\n'

requests kennt noch eine Reihe weiterer Authentifizierungsmethoden inklusive den sichereren Methoden wie OAuth1 und OAuth2. Details dazu sind in der Dokumentation 🇬🇧 zu finden.

weitere Funktionen

Das requests-Modul hat noch eine ganze Reihe weitere Funktionalitäten. So kann es z.B. mit Cookies, Sessions und Streams umgehen oder Proxy-Server nutzen. Informationen zu diesen und weiteren Funktionen sind in der Dokumentation 🇬🇧 zu finden.

Diese Revision wurde am 21. Dezember 2022 21:02 von karzer erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Python, Programmierung