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.

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

Die aktuelle, stabile Version von requests kann mit Hilfe von pip in einem venv installiert werden[2]:

pip3 install requests 

Wer requests unter Ubuntu 23.04 und neuer außerhalb eines venv installieren möchte, muss pip mit der entsprechenden Option aufrufen.

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 Request 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. April 2024 07:14 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Python, Programmierung