Requests – HTTP-Anfragen in Python meistern

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in die Requests-Bibliothek

Requests ist eine einfache und leistungsstarke Bibliothek für HTTP-Anfragen in Python. Sie bietet eine benutzerfreundliche Oberfläche für REST-API-Operationen, das Herunterladen von Webdaten sowie das Senden von Dateien und die Authentifizierung. Dank ihres klaren Syntax und ihres umfangreichen Funktionsumfangs hat sich Requests als De-facto-Standard unter den HTTP-Clients in Python etabliert.

Die Requests-Bibliothek wurde 2011 von Kenneth Reitz entwickelt, um HTTP-Anfragen in Python so einfach und bequem wie möglich zu gestalten. Sie baut auf urllib3 auf und bietet eine High-Level-API für die Arbeit mit dem HTTP-Protokoll.

Vorteile von Requests gegenüber urllib

  • Lesbarerer Syntax — intuitive Methoden und Parameter
  • Automatische Cookie- und Redirect-Verwaltung — keine zusätzliche Konfiguration nötig
  • Komfortable Arbeit mit JSON, Headern und Formularen — integrierte Unterstützung gängiger Formate
  • Unterstützung für Sessions, Proxys und Authentifizierung — vollständiges Toolkit für Webdienste
  • Unterstützung aller HTTP-Methoden — GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
  • Automatische Dekodierung von Inhalten — intelligente Verarbeitung von Kodierungen
  • Integrierte SSL-Unterstützung — sichere Verbindungen standardmäßig

Installation und Einbindung der Bibliothek

Installation mit pip:

pip install requests

Für ein Update auf die neueste Version:

pip install --upgrade requests

Import der Bibliothek:

import requests

Grundlegende HTTP-Anfragemethoden

GET-Anfragen senden

GET-Anfragen werden verwendet, um Daten vom Server abzurufen:

response = requests.get('https://api.example.com/data')
print(response.status_code)  # Statuscode
print(response.text)         # Antworttext

JSON-Daten abrufen:

response = requests.get('https://api.example.com/users')
data = response.json()  # Automatische Umwandlung in Python-Dictionary
print(data)

POST-Anfragen senden

POST-Anfragen werden verwendet, um Daten an den Server zu senden:

payload = {'username': 'admin', 'password': '123'}
response = requests.post('https://api.example.com/login', data=payload)

JSON-Daten senden:

user_data = {'name': 'John', 'email': 'john@example.com'}
response = requests.post('https://api.example.com/users', json=user_data)

PUT, PATCH und DELETE verwenden

# PUT - vollständige Aktualisierung einer Ressource
requests.put('https://api.example.com/user/1', json={'name': 'New Name', 'email': 'new@example.com'})

# PATCH - teilweise Aktualisierung einer Ressource
requests.patch('https://api.example.com/user/1', json={'active': True})

# DELETE - Löschen einer Ressource
requests.delete('https://api.example.com/user/1')

# HEAD - nur Header abrufen
response = requests.head('https://api.example.com/user/1')
print(response.headers)

Arbeiten mit Anfrageparametern

URL-Parameter können als Dictionary übergeben werden:

params = {'search': 'python', 'limit': 10, 'page': 1}
response = requests.get('https://api.example.com/search', params=params)
print(response.url)  # Zeigt die vollständige URL mit Parametern

Parameter können auch als Liste von Tupeln übergeben werden:

params = [('tag', 'python'), ('tag', 'web'), ('limit', 20)]
response = requests.get('https://api.example.com/posts', params=params)                    

Empfehlungen