- Wat zijn Python-verzoeken?
- Waarom Python-verzoeken gebruiken?
- Hoe Python-verzoeken te installeren?
- Verzoeken om op te halen en te posten
- Parameters doorgeven in URL
- Status code
- Reactie-inhoud
- Meerdelige bestandsupload
- Cookies en kopteksten
- Sessie-object
- Fouten en uitzonderingen
Wat zijn Python-verzoeken?
Python-verzoeken zijn geschreven door Kenneth Reitz en hebben een licentie onder apache 2.0. Het is een mensvriendelijke HTTP-bibliotheek zoals vermeld op de officiële documentatiepagina. Het is gemakkelijk te gebruiken en wordt in principe gebruikt voor het doen van allerlei HTTP-verzoeken. Hieronder volgen enkele geavanceerde functies waarmee verzoeken worden geleverd:- Blijf in leven en pooling van verbindingen
- Internationale domeinen en URL's
- Sessies met persistentie van cookies
- SSL-verificatie in browserstijl
- Automatische decodering van inhoud
- Basis- / samenvatting-authenticatie
- Elegante sleutel / waarde-cookies
- Automatische decompressie
- Unicode-antwoordinstanties
- HTTPs-proxy-ondersteuning
- Meerdelige bestandsuploads
- Streaming downloads
- Time-outs voor verbinding
- Gedeelde verzoeken
Waarom Python-verzoeken gebruiken?
Als het gaat om waarom gebruiken we python-verzoeken? de reden is vrij simpel. Als u Python-verzoeken gebruikt, hoeft u de query's niet handmatig toe te voegen aan uw URL's en postgegevens te coderen. Het maakt ons werk gemakkelijker bij het doen van http-verzoeken van welke aard dan ook.Nu we bekend zijn met python-verzoeken en waarom we ze in python gebruiken, laten we proberen te begrijpen hoe we verzoeken op ons project of systeem gaan installeren.Hoe Python-verzoeken te installeren?
Het installatiegedeelte is ook heel eenvoudig. Als u de pipenv-installatie op uw systeem hebt geïnstalleerd, kunt u eenvoudig de volgende opdracht in de terminal uitvoeren.$ pip installatieverzoeken
Hiermee wordt de bibliotheek met verzoeken op uw systeem geïnstalleerd. Er is nog een benadering om verzoeken te installeren. Als u pycharm gebruikt, kunt u verzoeken toevoegen aan de projectinterpreter in de instellingen. Het dient hetzelfde doel als de terminal in geval van installatie van de bibliotheek op ons project.Nu we klaar zijn met de installatie, laten we proberen te begrijpen hoe we verzoeken voor ophalen en posten in python zullen maken.Hoe kunt u verzoeken indienen en plaatsen?
Get request wordt in principe gebruikt om de gegevens van de server op te vragen. Hieronder volgt de syntaxis om een ophaalverzoek te doen.importverzoeken res = requests.get ('url') #res is hier het antwoordobject.Postverzoek wordt gebruikt om de te verwerken gegevens naar de server te sturen. Hieronder volgt de syntaxis om een postverzoek te doen.
importverzoeken payload = {'key1': 'value1'} res = requests.post ('url', data = payload)Nu we weten hoe we get- en postverzoeken kunnen doen, laten we eens kijken hoe we parameters aan de url kunnen doorgeven met behulp van het get-verzoek.
Parameters doorgeven in een URL
Het doorgeven van parameters in een url is net zo eenvoudig als het doen van een ophaalverzoek. Hieronder volgt een voorbeeld om parameters door te geven aan url.importverzoeken payload = {'key1': 'value1', 'key2': 'value2'} res = requests.get ('url', params = payload) print (res.url) #dit zal de url met de parameters printen het Get-verzoek doorlopen.
Status code
We kunnen ook de statuscode controleren, hierna volgt de code om de statuscode te controleren:
importverzoeken res = requests.get ('url') print (res.status_code ())Als de code 200 retourneert, betekent dit dat er geen fout is en dat het verzoek in orde is. Als we een slecht verzoek doen, retourneert de code code zoals 404 of 505, wat een http-fout veroorzaakt.
Reactie-inhoud
We kunnen ook de inhoud van de reactie van de server lezen. De bibliotheek decodeert automatisch de inhoud van de server.importverzoeken res = requests.get ('url') print (res.content)
Requests heeft ook een ingebouwde json-decoder.
importverzoeken res = requests.get ('url') print (res.json ()) #dit krijgt het antwoord in een json-indeling
Meerdelige bestandsupload
Het is heel gemakkelijk om meerdelige bestanden te uploaden met behulp van verzoeken.importverzoeken files = {'file': open ('filename', 'rb')} res = requests.post ('url', files = files) print (res.text)Voor het verzenden van meerdere bestanden specificeren we meerdere bestanden in de parameter bestanden.
Cookies en kopteksten
We kunnen de responsheaders en cookies van de server bekijken met behulp van het responsobject. Hieronder volgt de code om de headers van de server te bekijken.importverzoeken res = requests.get ('url') print (res.headers)We kunnen ook aangepaste headers doorgeven aan de url. Laten we de code eens bekijken.
import requests headers = {'key1': 'value1'} res = requests.get ('url', headers = headers) print (res.headers)Verzoeken veranderen het gedrag niet op basis van aangepaste kopteksten. Ze worden gewoon doorgegeven aan de laatste aanvraag. koekjes kan ook worden bekeken met behulp van het responsobject.
import verzoeken # om onze eigen cookies door te geven kunnen we de cookies parameter cookies = dict (cookies = 'working') res = requests.get ('url', cookies = cookies) print (res.text) gebruiken
Cookies worden geretourneerd in een RequestCookieJar, die werkt als een woordenboek maar ook een completere interface biedt, geschikt voor gebruik over meerdere domeinen of paden.
Sessie-object
Met het sessieobject kunt u bepaalde parameters behouden voor alle verzoeken.- Houdt cookies aan voor alle verzoeken van de sessie-instantie
- Gebruik urllib3-verbindingspooling
- Aanzienlijke prestaties nemen toe
- Een sessieobject heeft alle methoden van de API voor hoofdverzoeken
s = requests.session () s.get ('url') res = s.get ('url') print (res.text)
Fouten en uitzonderingen
Hieronder volgen de fouten en uitzonderingen die worden opgeworpen in een python-aanvraag.- In het geval van een netwerkprobleem, zullen verzoeken een ConnectionError-uitzondering veroorzaken.
- Response.raise_for_status () zal een HTTP-fout veroorzaken als er een niet-succesvolle statuscode is.
- Als er een time-out is, zal dit een time-out uitzondering veroorzaken
- De uitzondering op TooManyRedirects wordt gegenereerd als het verzoek het geconfigureerde aantal maximale omleidingen overschrijdt.