Python ile google API'ye nasıl istekte bulunulur?

İçindekiler

Bugün öğreteceğim belirli bir adresten bilgi almak için Google API'sine nasıl istekte bulunulur, öğreticiyle ilgili en ilginç şey öğrenmektir API'ye nasıl istekte bulunulur, Python ile oldukça kolay ve sezgiseldir. İlk önce kodun tamamını göreceğiz ve sonra bölümlerini açıklayacağım:

 #! / usr / bin / env urllib.parse'den python3 içe aktarma soketi içe aktarma alıntı_plus başlık = "" "\ GET / maps / api / geocode / json? address = {} & sensor = false HTTP / 1.1 \ r \ n \ Host : maps.google.com: 80 \ r \ n \ User-Agent: \ r \ n \ Bağlantı: kapat \ r \ n \ \ r \ n \ "" "def bulun (adres): bağlantı = socket.socket ( ) connection.connect (('maps.google.com', 80)) headerAux = header.format (quote_plus (adres)) connection.sendall (headerAux.encode ('utf-8')) veri = b '' d = bağlantı .recv (1024) iken d: data + = dd = bağlantı.recv (1024) yazdır (data.decode ('utf-8')) if __name__ == '__main__': bulun ('Geliştirme Caddesi, Móstoles')
Bağlantıyı kurmak için soket kitaplığını import etmemiz gerekiyor ve urllib.parse'ye ait olanquot_plus fonksiyonunun kullanımı daha sonra görülüyor.
 urllib.parse'den soketi içe aktarın alıntı_plus'ı içe aktarın 
Başlangıçta API'ye yapılan isteğin başlığını oluşturacağımız bir değişken oluşturacağız:
 başlık = "" "\ GET / haritalar / api / coğrafi kod / json? adres = {} & sensör = yanlış HTTP / 1.1 \ r \ n \ Ana Bilgisayar: maps.google.com: 80 \ r \ n \ Kullanıcı Aracısı: \ r \ n \ Bağlantı: kapat \ r \ n \ \ r \ n \ "" " 
İlk satırda göreceksiniz {} adres= den sonra bilgi almak istediğimiz sokağı geçebilmek bu şekildedir.

Bu başlık var

  • İstek türü: GET
  • İstek kaynağı: / maps / api / geocode / json? Adres = {} & sensör = false
  • Kullandığımız HTTP türü: HTTP 1.1
  • İsteğin yapılacağı ana bilgisayar (bağlantı noktası dahil): maps.google.com:80
  • Yapıldığı tarayıcıdan başka bir şey olmayan kullanıcı aracısı (boş bırakın, bu durumda önemli değil)
  • Bağlantı türü: kapat. Başka bir deyişle, istekten sonra kapatılacaktır.

adında bir fonksiyonumuz var. yerini tespit etmek, bir parametre alan bu, hakkında bilgi almak istediğimiz adres olacaktır. Fonksiyonu adım adım açıklayacağız:

ilk 2 satırda soketi oluşturup istenilen adrese bağlıyoruz (soket bağlantı işlevinin bir demet, tek bir argüman aldığına dikkat edin).

 bağlantı = socket.socket () connection.connect (('maps.google.com', 80)) 
Üçüncü kod satırı için kullanılır boşluğu doldur {} işleve iletilen adrese sahip başlığın (alıntı_plus'a dikkat edin, burada kullanılır).
 headerAux = header.format (quote_plus (adres))
sonraki satırda istek gönderildiUnutmayalım ki biz encode işlevini kullanıyoruz, yaptığımız şey utf-8 ile kodlanmış verileri göndermek, bunu yapmasaydık aşağıdaki resimde göreceğiniz gibi bir hata alırsınız:
 bağlantı.sendall (headerAux.encode ('utf-8'))

Kodun sonraki kısmı byte türünde bir değişken oluştur, aşağıdaki gibi bir hata almamanız durumunda internetten bize gelen verileri toplamamıza yardımcı olacaktır:

 veri = b''

Şimdi yaptığımız şey bir döngü bilgileri Google'ın yanıtından alıyoruz, ve onu data değişkeninde saklıyoruz, recv işlevi verileri döndüren işlevdir (aldığı parametre, işlevin döndüreceği maksimum veri miktarıdır). Döngü, daha fazla veri döndürülmeyene kadar devam eder, bu da while'dan çıkar.

 d = bağlantı.recv (1024) iken d: veri + = d d = bağlantı.recv (1024) 
[color = # a9a9a9] API bilgilerini alan döngü [/ color]

NotBu döngü, farklı bir şekilde, sonsuz bir döngüyle ve recv daha fazla bilgi döndürmediğinde kesilerek yapılabilir.

Tüm verileri almayı bitirdiğimizde, yalnızca bizi veya hepimizi ilgilendiren verileri boyayabiliriz, burada hepsini iade ediyorum:

 yazdır (data.decode ('utf-8')) 
Kodun son bölümünün istekle hiçbir ilgisi yoktur, tek yaptığı, yürütülmekte olan dosya olup olmadığını (eğer öyleyse, işlev başlatılır) veya başka bir dosyaya aktarılıp aktarılmadığını kontrol etmektir. Python dosyası (işlev çağrılmaz), belgelerinden öğrenilebilecek Python öğeleridir:
 if __name__ == '__main__': bulun ('Geliştirme Caddesi, Móstoles') 
Size programın çıktısının bir kısmını bırakıyorum, gösterilmeyen enlem ve boylam gibi daha fazla veri var:

Not
Bu istek yapmanın yollarından biridir, Python 2'de request ve json kullanarak bunu yapmanın bir yolunun kısa kodu, ancak bu isteklerle kendi programlarınızı oluşturabilirsiniz.

 içe aktarma istekleri def bulun (adres): parametreler = {'adres': adres, 'sensör': 'yanlış'} yanıt = request.get ('http://maps.googleapis.com/maps/api/geocode/json' , params = parametreler) print (response.json ()) if __name__ == '__main__': bulun ('Development Street, Móstoles')

Ve kodu indirmek istemeniz durumunda:

geolocationPython.zip 833 bayt 220 İndirme

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave