De Vraagt bibliotheek aan in Python is een van de integrale onderdelen van Python voor het doen van HTTP-verzoeken aan een opgegeven URL. Of het nu gaat om REST API's of Web Scraping, verzoeken zijn een must om te leren om verder te kunnen gaan met deze technologieën. Wanneer iemand een verzoek indient bij een URI, retourneert deze een antwoord. Python-verzoeken bieden ingebouwde functionaliteiten voor het beheren van zowel het verzoek als het antwoord.
burak ozcivit
In deze tutorial zullen we onderzoeken wat is Python-verzoekbibliotheek , Hoe te maken KRIJG verzoeken via Python-verzoeken, responsobjecten en -methoden, authenticatie met behulp van Python-verzoeken, enzovoort.
Inhoudsopgave
- Wat is de Python Requests-module?
- Hoe u een GET-verzoek kunt indienen via Python-verzoeken
- Http-aanvraagmethoden
- Reactieobject
- Reactiemethoden
- Authenticatie met behulp van Python-verzoeken
- SSL-certificaatverificatie
- Sessieobjecten
- Conclusie
Wat is de Python Requests-module?
- Requests is een door Apache2 gelicentieerde HTTP-bibliotheek, waarmee u HTTP/1.1-verzoeken kunt verzenden met behulp van Python.
- Om met internet te spelen, is Python Requests een must. Of het nu gaat om het gebruiken van API's, het downloaden van hele Facebook-pagina's en nog veel meer coole dingen, je zult een verzoek moeten indienen bij de URL.
- Verzoeken spelen een grote rol bij het omgaan met REST API's , En Web schrapen .
- Bekijk een voorbeeld van een Python-script met behulp van verzoeken en webscrapen - Webscraping implementeren in Python met BeautifulSoup
Aanvragen installeren
De installatie van verzoeken is afhankelijk van het type besturingssysteem dat wordt gebruikt. Het basiscommando waar dan ook zou zijn om een opdrachtterminal te openen en uit te voeren,
pip install requests>
De basismethode voor het installeren van verzoeken op elk besturingssysteem is het ophalen van de basisbestanden en het handmatig installeren van verzoeken. Requests wordt actief ontwikkeld op GitHub, waar de code altijd beschikbaar is. Voor code – bezoek hier . U kunt de openbare repository klonen:
git clone git://github.com/psf/requests.git>
Zodra u een kopie van de broncode heeft, kunt u deze in uw eigen Python-pakket insluiten, of deze eenvoudig in uw sitepakketten installeren:
cd requestspip install .>
Voor meer afrekenen – Hoe verzoeken in Python te installeren – Voor Windows, Linux, Mac
Een verzoek doen
De Python-verzoekmodule heeft verschillende ingebouwde methoden om Http-verzoeken te doen naar de opgegeven URI met behulp van GET-, POST-, PUT-, PATCH- of HEAD-verzoeken. Een Http-verzoek is bedoeld om gegevens op te halen van een opgegeven URI of om gegevens naar een server te pushen. Het werkt als een verzoek-antwoordprotocol tussen een client en een server. Laten we demonstreren hoe u een GET-verzoek naar een eindpunt kunt sturen. De GET-methode wordt gebruikt om informatie van de gegeven server op te halen met behulp van een bepaalde URI. De GET-methode verzendt de gecodeerde gebruikersinformatie die aan het paginaverzoek wordt toegevoegd. De pagina en de gecodeerde informatie worden gescheiden door het teken ‘?’. Bijvoorbeeld:
https://www.google.com/search?q=hello>
Hoe u een GET-verzoek kunt indienen via Python-verzoeken
De verzoekenmodule van Python biedt een ingebouwde methode genaamd krijgen() voor het maken van een GET-verzoek naar een opgegeven URI.
Syntaxis
requests.get(url, params={key: value}, args)>
Voorbeeld :
Laten we bijvoorbeeld proberen een verzoek in te dienen bij de API's van github.
Python3
import> requests> > # Making a GET request> r> => requests.get(> ' https://api.github.com/users/naveenkrnl '> )> > # check status code for response received> # success code - 200> print> (r)> > # print content of request> print> (r.content)> |
>
>
sla dit bestand op als request.py en voer het via terminal uit,
python request.py>
Uitgang –
Bezoek voor meer informatie – GET-methode – Python-verzoeken
Http-aanvraagmethoden
Methode | Beschrijving |
---|---|
KRIJGEN | De GET-methode wordt gebruikt om informatie van de gegeven server op te halen met behulp van een bepaalde URI. |
NA | De POST-verzoekmethode vraagt dat een webserver de gegevens accepteert die zijn ingesloten in de hoofdtekst van het verzoekbericht, hoogstwaarschijnlijk om deze op te slaan |
NEERZETTEN | De PUT-methode vraagt dat de ingesloten entiteit wordt opgeslagen onder de opgegeven URI. Als de URI verwijst naar een reeds bestaande bron, wordt deze gewijzigd en als de URI niet naar een bestaande bron verwijst, kan de server de bron met die URI maken. |
VERWIJDEREN | De DELETE-methode verwijdert de opgegeven bron |
HOOFD | De HEAD-methode vraagt om een antwoord dat identiek is aan dat van een GET-verzoek, maar zonder de antwoordtekst. |
LAPJE | Het wordt gebruikt voor wijzigingsmogelijkheden. Het PATCH-verzoek hoeft alleen de wijzigingen aan de bron te bevatten, niet de volledige bron |
Reactieobject
Wanneer iemand een verzoek indient bij een URI, retourneert deze een antwoord. Dit Response-object in termen van Python wordt geretourneerd door request.method(), waarbij de methode get, post, put, etc. is. Response is een krachtig object met veel functies en attributen die helpen bij het normaliseren van gegevens of het creëren van ideale delen van code. Bijvoorbeeld, respons.status_code retourneert de statuscode van de headers zelf, en men kan controleren of het verzoek succesvol is verwerkt of niet. Response-object kan worden gebruikt om veel kenmerken, methoden en functionaliteiten te impliceren.
Voorbeeld :
Python3
# import requests module> import> requests> # Making a get request> response> => requests.get(> ' https://api.github.com/ '> )> # print request object> print> (response.url)> # print status code> print> (response.status_code)> |
>
>
Sla dit bestand op als request.py en voer het uit met de onderstaande opdracht
vervang een kleur in gimp
Python request.py>
Statuscode 200 geeft aan dat het verzoek succesvol is ingediend.
Reactiemethoden
Methode | Beschrijving |
---|---|
response.headers | response.headers retourneert een woordenboek met antwoordheaders. |
responscodering | response.encoding retourneert de codering die wordt gebruikt om response.content te decoderen. |
reactie.verstreken | response.elapsed retourneert een timedelta-object met de tijd die is verstreken vanaf het verzenden van het verzoek tot de aankomst van het antwoord. |
reactie.close() | response.close() sluit de verbinding met de server. |
reactie.inhoud | response.content retourneert de inhoud van het antwoord, in bytes. |
reactiecookies | response.cookies retourneert een CookieJar-object met de cookies die door de server zijn teruggestuurd. |
reactiegeschiedenis | response.history retourneert een lijst met responsobjecten die de geschiedenis van het verzoek (url) bevatten. |
response.is_permanent_redirect | response.is_permanent_redirect retourneert True als het antwoord de permanent omgeleide URL is, anders False. |
response.is_redirect | response.is_redirect retourneert True als het antwoord is omgeleid, anders False. |
reactie.iter_content() | response.iter_content() herhaalt de respons.content. |
reactie.json() | response.json() retourneert een JSON-object van het resultaat (als het resultaat in JSON-indeling is geschreven, levert dit een fout op als dit niet het geval is). |
reactie.url | response.url retourneert de URL van het antwoord. |
reactie.tekst | response.text retourneert de inhoud van het antwoord, in Unicode. |
respons.status_code | response.status_code retourneert een getal dat de status aangeeft (200 is OK, 404 is Niet gevonden). |
reactie.verzoek | response.request retourneert het request-object dat om dit antwoord heeft verzocht. |
reactie.reden | response.reason retourneert een tekst die overeenkomt met de statuscode. |
reactie.raise_for_status() | response.raise_for_status() retourneert een HTTPError-object als er tijdens het proces een fout is opgetreden. |
reactie.ok | response.ok retourneert True als status_code kleiner is dan 200, anders False. |
reactie.links | response.links retourneert de headerlinks. |
Authenticatie met behulp van Python-verzoeken
Authenticatie verwijst naar het geven van toestemming aan een gebruiker om toegang te krijgen tot een bepaalde bron. Omdat niet iedereen toegang kan krijgen tot gegevens van elke URL, zou er in de eerste plaats authenticatie nodig zijn. Om deze authenticatie te bereiken, levert men doorgaans authenticatiegegevens via de Authorization-header of een aangepaste header die door de server is gedefinieerd.
Voorbeeld -
Python3
# import requests module> import> requests> from> requests.auth> import> HTTPBasicAuth> # Making a get request> response> => requests.get(> ' https://api.github.com / user, '> ,> > auth> => HTTPBasicAuth(> 'user'> ,> 'pass'> ))> # print request object> print> (response)> |
>
>
Vervang gebruiker en geef door met uw gebruikersnaam en wachtwoord. Het zal het verzoek verifiëren en een antwoord 200 retourneren, anders zal het fout 403 retourneren.
svm
Voor meer bezoek – Authenticatie met behulp van Python-verzoeken
SSL-certificaatverificatie
Verzoeken verifiëren SSL-certificaten voor HTTPS-verzoeken, net als een webbrowser. SSL-certificaten zijn kleine gegevensbestanden die een cryptografische sleutel digitaal aan de gegevens van een organisatie binden. Vaak wordt een website met een SSL-certificaat een beveiligde website genoemd. SSL-verificatie is standaard ingeschakeld en Requests genereert een SSLError als het certificaat niet kan worden geverifieerd.
Schakel SSL-certificaatverificatie uit
Laten we proberen toegang te krijgen tot een website met een ongeldig SSL-certificaat, met behulp van Python-verzoeken
Python3
# import requests module> import> requests> # Making a get request> response> => requests.get(> ' https://expired.badssl.com/ '> )> # print request object> print> (response)> |
>
>
muis scrollen werkt niet
Uitgang :-
Deze website heeft geen SSL-configuratie, dus deze fout wordt weergegeven. men kan de link naar het certificaat ook alleen ter validatie doorgeven via Python-verzoeken.
Python3
# import requests module> import> requests> # Making a get request> response> => requests.get(> ' https://github.com '> , verify> => '/path/to/certfile'> )> # print request object> print> (response)> |
>
Java-constante
>
Dit zou werken als het opgegeven pad correct is voor het SSL-certificaat voor github.com.
Voor meer bezoek- SSL-certificaatverificatie – Python-verzoeken
Sessieobjecten
Met een sessieobject kan men bepaalde parameters voor alle verzoeken behouden. Het bewaart ook cookies bij alle verzoeken van de sessie-instantie en maakt gebruik van de verbindingspooling van urllib3. Als er dus meerdere verzoeken naar dezelfde host worden gedaan, wordt de onderliggende TCP-verbinding hergebruikt, wat een aanzienlijke prestatieverbetering kan opleveren. Een sessie maakt bezwaar tegen alle methoden vanaf verzoeken.
Sessieobjecten gebruiken
Laten we het gebruik van sessieobjecten illustreren door een cookie op een URL in te stellen en vervolgens opnieuw een verzoek in te dienen om te controleren of er een cookie is ingesteld.
Python3
# import requests module> import> requests> > # create a session object> s> => requests.Session()> > # make a get request> s.get(> ' https://httpbin.org/cookies/set/sessioncookie/123456789 '> )> > # again make a get request> r> => s.get(> ' https://httpbin.org/cookies '> )> > # check if cookie is still set> print> (r.text)> |
>
>
Uitgang:
Bezoek voor meer informatie – Sessieobjecten – Python-verzoeken
Conclusie
Python Request Library is een krachtig hulpmiddel voor het doen van HTTP-verzoeken en interactie met web-API's. In deze zelfstudie hebben we de basisbeginselen besproken van het verzenden van GET- en POST-verzoeken, het omgaan met parameters en headers en het beheren van responsgegevens. De eenvoud en het intuïtieve ontwerp van de bibliotheek maken hem toegankelijk voor zowel beginners als ervaren ontwikkelaars.