Looking for python-requests Keywords? Try Ask4Keywords

python-requestsErste Schritte mit Python-Anfragen


Bemerkungen

HTTP für Menschen

Requests ist die einzige Nicht-GMO-HTTP-Bibliothek für Python, die für den menschlichen Gebrauch sicher ist.

Mit Anfragen können Sie organische, von Gras gespeiste HTTP/1.1 Anforderungen ohne manuelles Arbeiten senden. Sie müssen den URLs keine Abfragezeichenfolgen manuell hinzufügen oder Ihre POST-Daten formulieren. Keep-Alive und HTTP-Verbindungspooling erfolgt zu 100% automatisch, angetrieben von urllib3 , das in Requests eingebettet ist.

Die Macht der Anfragen:

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

Antwort lesen

response = requests.get("https://api.github.com/events")
text_resp = response.text
 

JSON-Antwort : Für Json-formatierte Antworten enthält das Paket einen integrierten Decoder

response = requests.get('https://api.github.com/events')
json_resp = response.json()
 

Diese Methode ValueError einen ValueError aus, wenn die Antwort leer ist oder der Inhalt nicht analysiert werden kann.

GET-Anfragen

requests.get() erstellt eine GET-Anfrage:

response = requests.get('https://example.com/')
 

params Abfrageparameter als Wörterbuch an das Argument params :

response = requests.get('https://example.com/', params={"a": 1, "b": 2})
 

Für GET-Anforderungen, für die möglicherweise eine Basisauthentifizierung erforderlich ist, können Sie den auth Parameter wie folgt hinzufügen:

response = requests.get('https://api.github.com/user', auth=('user', 'pass'))
 

Installation oder Setup

python-requests ist für PyPI, den Python Package Index, verfügbar, dh es kann über pip installiert werden:

pip install requests
 

Der aktuelle Quellcode befindet sich im GitHub-Repository der Anforderungen

Wenn Sie es von der Quelle installieren möchten, können Sie dies tun, indem Sie entweder das GitHub-Repository klonen:

git clone git://github.com/kennethreitz/requests.git
 

Oder durch Abrufen des Tarballs ( -O schreibt die Ausgabe in die Datei; -L folgt Umleitungen):

curl -OL https://github.com/kennethreitz/requests/tarball/master
 

Dann können Sie es installieren, indem Sie setup.py ausführen

python setup.py install
 

Unabhängig davon, wie Sie es installiert haben, können Sie es wie gewohnt importieren

>>> import requests
>>> requests.get('http://stackoverflow.com')
 

Andere Anforderungsmethoden

Das requests verfügt über Funktionen der obersten Ebene für die meisten HTTP-Methoden:

r = requests.put('https://example.com/', data=put_body)
r = requests.delete('https://example.com/')
r = requests.head('https://example.com/')
r = requests.options('https://example.com/')
r = requests.patch('https://example.com/', data=patch_update)
 

POST-Anfragen

POST-Anforderungen werden mit der request.post() -Methode gestellt.

Wenn Sie eine Web - Formular Anfrage als POST Körper senden müssen, passiert in einem Wörterbuch mit Schlüssel-Wert - Paaren als data Argument; requests codieren diese in einen application/x-www-form-urlencoded Mimetype-Body:

r = requests.post('https://github.com/', data={"a": 1, "b": 2})
 

Wenn Sie eine Json-Payload POST POST benötigen, können Sie json= . Dadurch wird der Content-Type-Header automatisch auf application/json

r = requests.post('https://github.com/', data={"a": 1, "b": 2})
 

Statuscodes lesen

Das Attribut status_code enthält den Statuscode der Antwort

good_req = requests.get('https://api.github.com/events')
code_200 = good_req.status_code

notfound_req = requests.get('https://api.github.com/not_found')
code_404 = notfound_req.status_code
 

requests.codes.__dict__ liefert eine Liste der verfügbaren http-Statuscodes.

Der Benutzer raise_for_status prüfen, ob der Statuscode 4xx oder 5xx war und in diesem Fall eine entsprechende Ausnahme auslösen.

good_req = requests.get('https://api.github.com/events')
good_req.raise_for_status()
# is a 200 status code so nothing happens

notfound_req = requests.get('https://api.github.com/not_found')
notfound_req.raise_for_status()
# raises requests.exceptions.HTTPError: 404 Client Error