Kā veikt pieprasījumus Google API, izmantojot Python

Satura rādītājs

Šodien es došos mācīt kā iesniegt pieprasījumus Google API, lai iegūtu informāciju no noteiktas adreses, pats interesantākais apmācībā ir mācīšanās kā iesniegt pieprasījumu API, ar Python tas ir diezgan viegli un intuitīvi. Vispirms mēs redzēsim pilnu kodu, un tad es paskaidrošu tā daļas:

 #! / usr / bin / env python3 importēšanas ligzda no urllib.parse importēt quote_plus header = "" "\ GET / maps / api / geocode / json? address = {} & sensor = false HTTP / 1.1 \ r \ n \ Host : maps.google.com: 80 \ r \ n \ User-Agent: \ r \ n \ Connection: close \ r \ n \ \ r \ n \ "" "def locate (adrese): connection = socket.socket ( ) connection.connect (('maps.google.com', 80)) headerAux = header.format (quote_plus (adrese)) connection.sendall (headerAux.encode ('utf-8')) data = b '' d = savienojums .recv (1024), kamēr d: data + = dd = connection.recv (1024) print (data.decode ('utf-8')), ja __name__ == '__main__': atrast ('Development Street, Móstoles')
Mums ir jāimportē ligzdu bibliotēka, lai izveidotu savienojumu, un funkcija quote_plus, kas pieder vietnei urllib.parse, tās izmantošana ir redzama vēlāk.
 importēt ligzdu no urllib.parse importēt quote_plus 
Sākumā mēs izveidosim mainīgo, kur izveidosim API pieprasījuma galveni:
 header = "" "\ GET / maps / api / geocode / json? address = {} & sensor = false HTTP / 1.1 \ r \ n \ Host: maps.google.com: 80 \ r \ n \ User-Agent: \ r \ n \ Savienojums: aizvērt \ r \ n \ \ r \ n \ "" " 
Pirmajā rindā jūs redzēsit {} pēc adreses =, tas ir šādi, lai varētu iziet garām ielai, par kuru vēlamies informāciju.

Šai galvenei ir

  • Pieprasījuma veids: GET
  • Pieprasījuma resurss: / maps / api / geocode / json? Address = {} & sensor = false
  • Mūsu izmantotais HTTP veids: HTTP 1.1
  • Saimnieks, kurā tiks veikts pieprasījums (ieskaitot portu): maps.google.com:80
  • Lietotāja aģents, kas nav nekas cits kā pārlūks, no kura tas tiek darīts (atstājiet to tukšu, šajā gadījumā tas nav svarīgi)
  • Savienojuma veids: aizvērt. Citiem vārdiem sakot, pēc pieprasījuma tas tiks slēgts.

Mums ir funkcija ar nosaukumu lai atrastu, kas saņem parametru, tā būs adrese, par kuru mēs vēlamies informāciju. Mēs soli pa solim izskaidrosim funkciju:

Pirmajās 2 rindās mēs izveidojam ligzdu un savienojam to ar vēlamo adresi (ņemiet vērā, ka ligzdas savienošanas funkcija saņem karti, vienu argumentu).

 connection = socket.socket () connection.connect (('maps.google.com', 80)) 
Trešā koda rinda tiek izmantota aizpildiet tukšo vietu {} no galvenes ar adresi, kas tiek nodota funkcijai (paziņojums quote_plus, tas tiek izmantots šeit).
 headerAux = header.format (quote_plus (adrese))
Nākamajā rindā pieprasījums tiek nosūtītsŅemiet vērā, ka mēs izmantojam kodēšanas funkciju, un mēs nosūtām utf-8 kodētos datus, ja mēs to nedarītu, jūs saņemsiet kļūdu, kā redzēsiet šajā attēlā:
 connection.sendall (headerAux.encode ('utf-8'))

Nākamā koda daļa izveidot baita tipa mainīgo, tas palīdzēs mums apkopot datus, kas mums tiek piegādāti no interneta, ja nesaņemsit šādu kļūdu:

 dati = b "

Tagad mēs darām cilpu, kur mēs saņemam informāciju no Google atbildes, un mēs to glabājam datu mainīgajā, funkcija recv ir tā, kas atgriež datus (saņemtais parametrs ir maksimālais datu apjoms, ko funkcija atgriezīs). Cikls turpinās, līdz vairs netiek atgriezti dati, kas pēc tam tiks izvadīti.

 d = connection.recv (1024), savukārt d: data + = d d = connection.recv (1024) 
[color = # a9a9a9] Cilpa, kas saņem API informāciju [/ color]

PiezīmeŠo cilpu varētu redzēt citādi, ar bezgalīgu cilpu un pārtraukumu, kad recv nesniedz vairāk informācijas.

Kad esam pabeiguši visu datu saņemšanu, mēs varam krāsot tikai tos datus, kas mūs vai visus interesē, šeit es atdodu visus:

 drukāt (data.decode ('utf-8')) 
Pēdējai koda daļai nav nekāda sakara ar pieprasījumu, tā ir pārbaude, vai viss, kas tiek darīts, ir redzēt, vai tas tiek izpildīts fails (ja jā, funkcija tiek palaista) vai tas tiek importēts citā Python fails (funkcija netiktu izsaukta), tas ir Python materiāls, ko var uzzināt no tā dokumentācijas:
 if __name__ == '__main__': atrast ('Development Street, Móstoles') 
Es atstāju jums daļu no programmas produkcijas, un ir vairāk datu, piemēram, platuma un garuma, kas netiek parādīti:

Piezīme
Šis ir viens no veidiem, kā var iesniegt pieprasījumus, šeit ir īss kods, kā to izdarīt Python 2, izmantojot pieprasījumu un json, taču ar šiem pieprasījumiem varat izveidot savas programmas.

 importēšanas pieprasījumi def locate (adrese): parametri = {'adrese': adrese, 'sensors': 'nepatiesa'} atbildes = pieprasījumi.get ('http://maps.googleapis.com/maps/api/geocode/json' , params = parametri) print (response.json ()) if __name__ == '__main__': locate ('Development Street, Móstoles')

Un, ja vēlaties lejupielādēt kodu:

ģeogrāfiskā atrašanās vietaPython.zip 833 baiti 220 lejupielādes

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave