Python Google Places API

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
illy1
User
Beiträge: 26
Registriert: Montag 21. Oktober 2019, 20:24

__blackjack__ hat geschrieben: Dienstag 22. Oktober 2019, 18:06 @illy1: Aber was sind denn dann ”Fields”? Du behandelst es ja dann als wäre es wieder das komplette Wörterbuch, und das in einer Schleife, das macht alles gar keinen Sinn.
Aber wieso nicht?

Ich möchte ja nur, dass er so wie in Zeile 18 das selbe Prinzip mit einer anderen URL wiederholt.
illy1
User
Beiträge: 26
Registriert: Montag 21. Oktober 2019, 20:24

Nun habe das Problem gelöst.. Hat wirklich keinen Sinn gemacht sort eine Schleife zu platzieren..

Nun kommt aber das nächste Problem :D

Code: Alles auswählen

search = input("Bitte Stichwort für Ortssuche eingeben: ")
query= "query="+search
find_places = "https://maps.googleapis.com/maps/api/place/textsearch/json?"+query+"&key="+APIKey
url_json = urllib.request.urlopen(find_places)
jsonf = json.load(url_json)
for place in jsonf['results']:
    place_id = place['place_id']
    details = "https://maps.googleapis.com/maps/api/place/details/json?place_id="+place_id+"&fields=formatted_phone_number&key="+APIKey
    url_json2 = urllib.request.urlopen(details)
    jsondetails = json.load(url_json2)
    dir_details = jsondetails['result']
    print(place['name']+" "+place['formatted_address']+" "+dir_details['formatted_phone_number']+" "+place['rating'])

Code: Alles auswählen

Traceback (most recent call last):
  File "d:/isaac/Programmierung/Python_uebungen/GoogleAPI.py", line 24, in <module>
    print(place['name']+" "+place['formatted_address']+" "+dir_details['formatted_phone_number']+" "+place['rating'])
TypeError: can only concatenate str (not "int") to str
Die ratings werden jeweils mit "." angegeben... liegt das daran?

VG
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du die Fehlermeldung mal gelesen? Oder gar gegoogelt?
illy1
User
Beiträge: 26
Registriert: Montag 21. Oktober 2019, 20:24

Habs gefunden dann... Befehl hieß str..

Danke für die Hilfe, Thread kann geschlossen werden.
Benutzeravatar
snafu
User
Beiträge: 6867
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Man könnte auch einfach print() richtig benutzen und Kommas verwenden. Dann wird jedes Argument automatisch in eine Zeichenkette verwandelt und die Leerzeichen gibt es gratis dazu. 😌
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

URL-Parameter sollte man nicht einfach per + zusammenstückeln, weil Sonderzeichen spezielle kodiert werden müssen.
URLs die man öffnet sollte man auch wieder schließen, am besten zusammen mit dem with-Statement.

Code: Alles auswählen

import urllib.request
import urllib.parse

API_KEY = "xyz"
PLACES_URL = "https://maps.googleapis.com/maps/api/place/{}/json?{}"

search = input("Bitte Stichwort für Ortssuche eingeben: ")
params = urllib.parse.urlencode({'query': search, 'key': API_KEY})
with urllib.request.urlopen(PLACES_URL.format("textsearch", params)) as response
    places = json.load(response)['results']
for place in places:
    params = urllib.parse.urlencode({'place_id': place['place_id'],
        'fields': 'formatted_phone_number', 'key': API_KEY})
    with urllib.request.urlopen(PLACES_URL.format("details", params)) as response
        details = json.load(response)['results']
    print(place['name'], place['formatted_address'], details['formatted_phone_number'], place['rating'])
Antworten