Jak vytvářet požadavky na rozhraní Google API pomocí Pythonu

Obsah

Dnes budu učit jak odesílat požadavky na rozhraní Google API za účelem získávání informací z určité adresy, nejzajímavější na tutoriálu je učení jak podat požadavek na API, s Pythonem je to docela snadné a intuitivní. Nejprve uvidíme kompletní kód a poté vysvětlím jeho části:

 #! / usr / bin / env python3 importovací zásuvka z urllib.parse import 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 \ Připojení: zavřít \ r \ n \ \ r \ n \ "" "def locate (adresa): connection = socket.socket ( ) connection.connect (('maps.google.com', 80)) headerAux = header.format (quote_plus (adresa)) connection.sendall (headerAux.encode ('utf-8')) data = b '' d = connection .recv (1024) while d: data + = dd = connection.recv (1024) print (data.decode ('utf-8')) if __name__ == '__main__': locate ('Development Street, Móstoles')
K navázání spojení musíme importovat knihovnu soketů a funkci quote_plus, která patří do urllib.parse, její použití uvidíme později.
 import socket from urllib.parse import quote_plus 
Na začátku vytvoříme proměnnou, kde vytvoříme hlavičku požadavku do API:
 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 \ Připojení: zavřít \ r \ n \ \ r \ n \ "" " 
V prvním řádku uvidíte {} after address =, je to takové, že můžeme projít ulicí, o které chceme informace.

Tato hlavička má

  • Typ požadavku: ZÍSKAT
  • Zdroj požadavku: / maps / api / geocode / json? Adresa = {} & senzor = false
  • Používáme typ HTTP: HTTP 1.1
  • Hostitel, kde bude požadavek podán (včetně portu): maps.google.com:80
  • Uživatelský agent, který není ničím jiným než prohlížečem, ze kterého se provádí (nechte prázdné, v tomto případě to není důležité)
  • Typ připojení: zavřít. Jinými slovy, po žádosti bude uzavřen.

Máme funkci nazvanou lokalizovat, který obdrží parametr, bude to adresa, o které chceme informace. Funkci vysvětlíme krok za krokem:

V prvních 2 řádcích vytvoříme zásuvku a připojíme ji na požadovanou adresu (Všimněte si, že funkce socket connect přijímá řazené kolekce členů, jediný argument).

 connection = socket.socket () connection.connect (('maps.google.com', 80)) 
Třetí řádek kódu slouží k vyplnit mezeru {} záhlaví s adresou, která je předána funkci (upozornění quote_plus, používá se zde).
 headerAux = header.format (quote_plus (adresa))
Na dalším řádku žádost je odeslánaVšimněte si, že používáme funkci kódování, to, co děláme, je odeslat data zakódovaná v utf-8, pokud bychom to neudělali, zobrazí se chyba, jak uvidíte na následujícím obrázku:
 connection.sendall (headerAux.encode ('utf-8'))

Další část kódu vytvořte proměnnou typu byte, pomůže nám to shromažďovat data, která k nám přicházejí z internetu, pokud neobdržíte chybu jako následující:

 data = b ''

Nyní děláme smyčku kde informace získáváme z odpovědi společnosti Google, a my je ukládáme do datové proměnné, funkce recv je ta, která vrací data (parametr, který přijímá, je maximální množství dat, které funkce vrátí). Smyčka pokračuje, dokud se nevrátí žádná další data, což chvíli skončí.

 d = connection.recv (1024) while d: data + = d d = connection.recv (1024) 
[color = # a9a9a9] Smyčka, která přijímá informace o API [/ color]

PoznámkaTuto smyčku bylo možné vidět provedenou jiným způsobem, s nekonečnou smyčkou a přerušením, když recv nevrací více informací.

Když dokončíme příjem všech dat, můžeme namalovat pouze data, která nás nebo všechny zajímají, zde vracím všechny:

 tisk (data.decode ('utf-8')) 
Poslední část kódu nemá nic společného s požadavkem, je to kontrola, zda vše, co dělá, je zjistit, zda se jedná o spuštěný soubor (pokud ano, funkce je spuštěna) nebo zda se importuje do jiného Soubor Python (funkce by se nevolala), to jsou věci z Pythonu, které se lze naučit z jeho dokumentace:
 if __name__ == '__main__': locate ('Development Street, Móstoles') 
Nechávám vám část výstupu programu, je zde více údajů, jako například zeměpisná šířka a délka, které nejsou zobrazeny:

Poznámka
Toto je jeden ze způsobů, jak lze podávat žádosti, zde je krátký kód jednoho způsobu, jak to udělat v Pythonu 2 pomocí request a json, ale s těmito požadavky si můžete vytvářet vlastní programy.

 import žádostí def locate (adresa): parameters = {'address': address, 'sensor': 'false'} response = requests.get ('http://maps.googleapis.com/maps/api/geocode/json' , params = parametry) print (response.json ()) if __name__ == '__main__': locate ('Development Street, Móstoles')

A v případě, že si chcete stáhnout kód:

geolocationPython.zip 833 bajtů 220 stažení

Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave