logo

Python užklausų pamoka

The Prašo bibliotekos Python yra viena iš neatskiriamų Python dalių, skirtų HTTP užklausoms į nurodytą URL pateikti. Nesvarbu, ar tai būtų REST API, ar žiniatinklio iškarpymas, norint toliau naudoti šias technologijas, reikia išmokti užklausas. Pateikus užklausą URI, jis grąžina atsakymą. Python užklausos suteikia integruotas funkcijas, skirtas valdyti užklausą ir atsakymą.

spyruokliniai moduliai

Šioje pamokoje mes išnagrinėsime, kas yra Python užklausų biblioteka , Kaip padaryti GAUTI užklausas per Python užklausas, atsakymo objektus ir metodus, autentifikavimą naudojant Python užklausas ir pan.



python-requests-module

Turinys

Kas yra Python užklausų modulis?

  • Užklausos yra Apache2 licencijuota HTTP biblioteka, leidžianti siųsti HTTP/1.1 užklausas naudojant Python.
  • Norint žaisti su žiniatinkliu, Python užklausos yra būtinos. Nesvarbu, ar tai būtų API paspaudimas, ištisų „Facebook“ puslapių atsisiuntimas ir daug daugiau įdomių dalykų, turėsite pateikti užklausą URL.
  • Svarbų vaidmenį atlieka prašymai REST API , ir Žiniatinklio įbrėžimas .
  • Patikrinkite Python scenarijaus pavyzdį naudodami užklausas ir žiniatinklio iškarpymą – „Web Scraping“ įdiegimas „Python“ naudojant „BeautifulSoup“.

Prašymų diegimas

Diegimo užklausos priklauso nuo eis naudojančios operacinės sistemos tipo, pagrindinė komanda bet kur būtų atidaryti komandų terminalą ir paleisti,



pip install requests>

Pagrindinis užklausų diegimo metodas bet kurioje operacinėje sistemoje yra patraukti bazinius failus ir įdiegti užklausas rankiniu būdu, o užklausos aktyviai kuriamos GitHub, kur kodas visada yra. Dėl kodo – apsilankykite čia . Galite klonuoti viešąją saugyklą:

git clone git://github.com/psf/requests.git>

Kai turėsite šaltinio kopiją, galite įterpti ją į savo Python paketą arba lengvai įdiegti į savo svetainės paketus:

cd requestspip install   .>

Norėdami daugiau apžiūrėti - Kaip įdiegti užklausas „Python“ - „Windows“, „Linux“, „Mac“.



Pateikti užklausimą

Python užklausų modulis turi keletą integruotų metodų, kaip pateikti Http užklausas į nurodytą URI naudojant GET, POST, PUT, PATCH arba HEAD užklausas. Http užklausa skirta gauti duomenis iš nurodyto URI arba perkelti duomenis į serverį. Jis veikia kaip užklausų-atsakymų protokolas tarp kliento ir serverio. Parodykime, kaip pateikti GET užklausą galutiniam taškui. GET metodas naudojamas informacijai iš nurodyto serverio gauti naudojant nurodytą URI. GET metodas siunčia užkoduotą vartotojo informaciją, pridėtą prie puslapio užklausos. Puslapis ir užkoduota informacija yra atskirti simboliu „?“. Pavyzdžiui:

https://www.google.com/search?q=hello>

Kaip pateikti GET užklausą per Python užklausas

Python užklausų modulis pateikia įmontuotą metodą, vadinamą gauti () už GET užklausą į nurodytą URI.

Sintaksė

requests.get(url, params={key: value}, args)>

Pavyzdys :

Pavyzdžiui, pabandykime pateikti užklausą „github“ API.

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)>

>

>

išsaugokite šį failą kaip request.py ir paleiskite terminalą,

python request.py>

Išvestis –

tinklo topologija

Python-requests-get-method

Norėdami sužinoti daugiau, apsilankykite - GET metodas – Python užklausos

Http užklausos metodai

Metodas apibūdinimas
GAUTI GET metodas naudojamas informacijai iš nurodyto serverio gauti naudojant nurodytą URI.
PAST POST užklausos metodas reikalauja, kad žiniatinklio serveris priimtų duomenis, esančius užklausos pranešimo tekste, greičiausiai, kad juos saugotų
PUT PUT metodas reikalauja, kad uždaras objektas būtų saugomas pateiktu URI. Jei URI nurodo jau esamą išteklių, jis modifikuojamas, o jei URI nenurodo į esamą išteklių, serveris gali sukurti išteklius su tuo URI.
IŠTRINTI DELETE metodas ištrina nurodytą šaltinį
GALVA HEAD metodas prašo atsakymo, identiško GET užklausos atsakymui, bet be atsakymo turinio.
PLEISTRAS Jis naudojamas modifikuoti galimybes. PATCH užklausoje turi būti tik išteklių pakeitimai, o ne visas išteklius

Atsako objektas

Pateikus užklausą URI, jis grąžina atsakymą. Šis atsako objektas, kalbant apie python, yra grąžinamas requests.method(), metodas yra gauti, paskelbti, įdėti ir tt Response yra galingas objektas, turintis daug funkcijų ir atributų, padedančių normalizuoti duomenis arba sukurti idealias kodo dalis. Pavyzdžiui, atsakymas.būsenos_kodas grąžina būsenos kodą iš pačių antraščių ir galima patikrinti, ar užklausa buvo sėkmingai apdorota, ar ne. Atsakymo objektas gali būti naudojamas norint nurodyti daugybę funkcijų, metodų ir funkcijų.

Pavyzdys :

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)>

>

>

Išsaugokite šį failą kaip request.py ir paleiskite naudodami toliau pateiktą komandą

Python request.py>

atsakymas-python-užklausos

Būsenos kodas 200 rodo, kad užklausa buvo sėkmingai pateikta.

buliai vs jautis

Reagavimo metodai

Metodas apibūdinimas
atsakymas.antraštės response.headers pateikia atsakymų antraščių žodyną.
atsakymas.kodavimas atsakymas.encoding grąžina kodavimą, naudojamą atsakymui iškoduoti.turinys.
atsakymas.praėjo response.elapsed grąžina timedelta objektą su laiku, praėjusiu nuo užklausos išsiuntimo iki atsakymo gavimo.
atsakymas.close() response.close() uždaro ryšį su serveriu.
atsakymas.turinys response.content grąžina atsakymo turinį baitais.
atsakymas.slapukai response.cookies grąžina CookieJar objektą su slapukais, išsiųstais atgal iš serverio.
atsakymas.istorija response.history pateikia atsakymo objektų sąrašą, kuriame yra užklausos istorija (url).
atsakymas.is_permanent_redirect response.is_permanent_redirect grąžina „True“, jei atsakymas yra nuolatinis peradresuotas URL, kitu atveju „False“.
atsakymas.is_redirect response.is_redirect grąžina True, jei atsakymas buvo peradresuotas, kitu atveju False.
response.iter_content() response.iter_content() kartojasi per atsakymą.turinys.
response.json() response.json() grąžina rezultato JSON objektą (jei rezultatas buvo parašytas JSON formatu, jei ne, tai sukelia klaidą).
atsakymas.url response.url grąžina atsakymo URL.
atsakymas.tekstas response.text grąžina atsakymo turinį unikodo formatu.
atsakymas.būsenos_kodas atsakymas.būsenos_kodas grąžina skaičių, nurodantį būseną (200 yra gerai, 404 yra nerasta).
atsakymas.prašymas response.request grąžina užklausos objektą, kuris prašė šio atsakymo.
atsakymas.priežastis response.reason pateikia būsenos kodą atitinkantį tekstą.
response.raise_for_status() response.raise_for_status() grąžina HTTPError objektą, jei proceso metu įvyko klaida.
atsakymas.gerai response.ok grąžina True, jei status_code yra mažesnis nei 200, kitu atveju False.
atsakymas.nuorodos response.links grąžina antraštės nuorodas.

Autentifikavimas naudojant Python užklausas

Autentifikavimas reiškia leidimų suteikimą vartotojui pasiekti tam tikrą šaltinį. Kadangi kiekvienam negali būti leista pasiekti duomenis iš kiekvieno URL, pirmiausia reikėtų autentifikuoti. Norint pasiekti šį autentifikavimą, paprastai autentifikavimo duomenys pateikiami per autorizacijos antraštę arba pasirinktinę serverio apibrėžtą antraštę.

Pavyzdys -

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)>

>

>

Pakeiskite naudotoją ir perduokite savo vartotojo vardu ir slaptažodžiu. Jis patvirtins užklausą ir pateiks atsakymą 200 arba pateiks klaidą 403.

autentifikuoti-python-užklausas

Norėdami daugiau apsilankyti - Autentifikavimas naudojant Python užklausas

SSL sertifikato patvirtinimas

Užklausos patvirtina HTTPS užklausų SSL sertifikatus, kaip ir žiniatinklio naršyklėje. SSL sertifikatai yra maži duomenų failai, kurie skaitmeniniu būdu susieja kriptografinį raktą su organizacijos informacija. Dažnai svetainė su SSL sertifikatu vadinama saugia svetaine. Pagal numatytuosius nustatymus SSL patvirtinimas yra įjungtas, o užklausos pateiks SSLE klaidą, jei nepavyks patvirtinti sertifikato.

Išjungti SSL sertifikato patvirtinimą

Pabandykime pasiekti svetainę su netinkamu SSL sertifikatu naudodami Python užklausas

Python3




sąrašai java

# import requests module> import> requests> # Making a get request> response>=> requests.get(>' https://expired.badssl.com/ '>)> # print request object> print>(response)>

>

>

Išvestis: -

ssl-certificate-verification-python-requests

Šioje svetainėje nėra SSL sąrankos, todėl iškyla ši klaida. taip pat galima perduoti nuorodą į sertifikatą patvirtinimui tik per python užklausas.

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)>

>

>

Tai veiktų, jei nurodytas kelias yra tinkamas github.com SSL sertifikatui.

Norėdami daugiau apsilankyti - SSL sertifikato patvirtinimas – Python užklausos

Seanso objektai

Seanso objektas leidžia išlaikyti tam tikrus parametrus visose užklausose. Ji taip pat išlaiko slapukus visose užklausose, pateiktose iš seanso egzemplioriaus, ir naudos urllib3 ryšio telkimą. Taigi, jei tam pačiam pagrindiniam kompiuteriui pateikiamos kelios užklausos, pagrindinis TCP ryšys bus naudojamas pakartotinai, o tai gali žymiai padidinti našumą. Seanso objektas, atitinkantis visus užklausų metodus.

Seanso objektų naudojimas

Leiskite mums iliustruoti seanso objektų naudojimą, nustatydami slapuką į URL ir dar kartą pateikdami užklausą patikrinti, ar slapukas nustatytas.

Python3




html sąrašo laukelį

# 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)>

>

>

Išvestis:

sesija-objektai-python-užklausos

Norėdami sužinoti daugiau, apsilankykite - Seanso objektai – Python užklausos

Išvada

„Python Request Library“ yra galingas HTTP užklausų teikimo ir sąveikos su žiniatinklio API įrankis. Šioje pamokoje apžvelgėme GET ir POST užklausų siuntimo, parametrų ir antraščių tvarkymo bei atsakymų duomenų tvarkymo pagrindus. Bibliotekos paprastumas ir intuityvus dizainas leidžia ją pasiekti tiek pradedantiesiems, tiek patyrusiems kūrėjams.