So stellen Sie mit Python Anfragen an die Google-API

Inhaltsverzeichnis

Heute werde ich unterrichten wie man Anfragen an die Google API stellt, um Informationen von einer bestimmten Adresse zu erhalten, das Interessanteste am Tutorial ist das Lernen So stellen Sie eine Anfrage an eine API, mit Python ist es ganz einfach und intuitiv. Zuerst sehen wir uns den kompletten Code an und dann erkläre ich seine Teile:

 #! /usr/bin/env python3 import socket from 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 \ Verbindung: schließen \ r \ n \ \ r \ n \ "" "def lokalisieren (Adresse): Verbindung = socket.socket ( ) connection.connect (('maps.google.com', 80)) headerAux = header.format (quote_plus (Adresse)) 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 ('Entwicklungsstraße, Móstoles')
Wir müssen die Socket-Bibliothek importieren, um die Verbindung herzustellen, und die Funktion quote_plus, die zu urllib.parse gehört, ihre Verwendung wird später gesehen.
 import socket from urllib.parse import quote_plus 
Zu Beginn erstellen wir eine Variable, in der wir den Header der Anfrage an die API erstellen:
 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 \ Verbindung: schließen \ r \ n \ \ r \ n \ "" " 
In der ersten Zeile sehen Sie {} after address =, so ist es, die Straße passieren zu können, über die wir Informationen benötigen.

Dieser Header hat

  • Anfragetyp: GET
  • Die Anfrageressource: / maps / api / geocode / json? Address = {} & sensor = false
  • Der von uns verwendete HTTP-Typ: HTTP 1.1
  • Der Host, an den die Anfrage gestellt wird (einschließlich Port): maps.google.com:80
  • Der Benutzeragent, der nichts anderes ist als der Browser, von dem aus es gemacht wird (lassen Sie es leer, in diesem Fall ist es nicht wichtig)
  • Der Verbindungstyp: Schließen. Mit anderen Worten, nach der Anfrage wird es geschlossen.

Wir haben eine Funktion namens lokalisieren, die einen Parameter empfängt, ist dies die Adresse, über die wir Informationen benötigen. Wir erklären die Funktion Schritt für Schritt:

In den ersten 2 Zeilen wir erstellen den Socket und verbinden ihn mit der gewünschten Adresse (Beachten Sie, dass die Socket-Connect-Funktion ein Tupel, ein einzelnes Argument, empfängt).

 connection = socket.socket () connection.connect (('maps.google.com', 80)) 
Die dritte Codezeile wird verwendet, um die Lücke füllen {} des Headers mit der Adresse, die an die Funktion übergeben wird (beachte quote_plus, wird hier verwendet).
 headerAux = header.format (quote_plus (Adresse))
In der nächsten Zeile die Anfrage wird gesendetBeachten Sie, dass wir die encode-Funktion verwenden. Wir senden die in utf-8 codierten Daten. Wenn wir dies nicht tun, erhalten Sie eine Fehlermeldung, wie Sie in der folgenden Abbildung sehen:
 connection.sendall (headerAux.encode ('utf-8'))

Der nächste Teil des Codes Erstellen Sie eine Variable vom Typ Byte, hilft es uns, die Daten zu sammeln, die aus dem Internet an uns kommen, wenn Sie keine Fehlermeldung wie die folgende erhalten:

 Daten = b''

Was wir jetzt machen, ist eine Schleife, in der wir erhalten die Informationen aus der Antwort von Google, und wir speichern sie in der Variablen data, ist die Funktion recv diejenige, die die Daten zurückgibt (der Parameter, den sie empfängt, ist die maximale Datenmenge, die die Funktion zurückgibt). Die Schleife wird fortgesetzt, bis keine Daten mehr zurückgegeben werden, wodurch das while beendet wird.

 d = Verbindung.recv (1024) während d: Daten + = d d = Verbindung.recv (1024) 
[color = # a9a9a9] Schleife, die die API-Informationen empfängt[/color]

NotizDiese Schleife könnte auf andere Weise ausgeführt werden, mit einer Endlosschleife und einer Unterbrechung, wenn recv keine weiteren Informationen zurückgibt.

Wenn wir alle Daten erhalten haben, können wir nur die Daten malen, die uns interessieren oder alle, hier gebe ich alle zurück:

 drucken (data.decode ('utf-8')) 
Der letzte Teil des Codes hat nichts mit der Anfrage zu tun, es wird nur überprüft, ob die Datei ausgeführt wird (wenn ja, wird die Funktion gestartet) oder ob sie in eine andere importiert wird Python-Datei (die Funktion würde nicht aufgerufen), es ist Python-Zeug, das aus seiner Dokumentation gelernt werden kann:
 if __name__ == '__main__': lokalisieren ('Entwicklungsstraße, Móstoles') 
Ich überlasse Ihnen einen Teil der Ausgabe des Programms, es gibt mehr Daten wie Breiten- und Längengrad, die nicht angezeigt werden:

Notiz
Dies ist eine der Möglichkeiten, wie Anfragen gestellt werden können. Hier ist ein kurzer Code für eine Möglichkeit, dies in Python 2 mit Anfrage und Json zu tun, aber Sie können mit diesen Anfragen Ihre eigenen Programme erstellen.

 import Requests def lokalisieren (address): parameters = {'address': address, 'sensor': 'false'} response = request.get ('http://maps.googleapis.com/maps/api/geocode/json' , params = Parameter) print (response.json ()) if __name__ == '__main__': locate ('Entwicklungsstraße, Móstoles')

Und falls Sie den Code herunterladen möchten:

geolocationPython.zip 833 Byte 220 Downloads

Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave