使用 Python 调用 JSON API

新手上路,请多包涵

该程序将提示输入位置、联系 Web 服务并检索 Web 服务的 JSON 并解析该数据,并从 JSON 中检索第一个 place_id。地点 ID 是一种文本标识符,可在 Google 地图中唯一标识某个地点。 API端点

要完成此任务,您应该使用具有 Google 数据静态子集的 API 端点:

http://py4e-data.dr-chuck.net/json ?此 API 使用与 Google API 相同的参数(地址)。此 API 也没有速率限制,因此您可以随意测试。如果您访问不带参数的 URL,您会收到“无地址…”响应。

我已经完成了这项任务,但代码没有运行。每当我运行程序时,我都是 JSONDecodeError。

 import urllib.request, urllib.parse, urllib.error
import json
adr= 'http://py4e-data.dr-chuck.net/json?'
while True:
    loca= input('Enter Location: ')
    if len(loca)<1:break

    url=adr + urllib.parse.urlencode({"address": loca})
    print('Retrieving', url)
    fha=urllib.request.urlopen(url)
    data=fha.read().decode()
    print('Retrieved', len(data))

    jsdata=json.loads(str(data))
    placeid= jsdata['results'][0]['place_id']
    print('The Place ID is: ', placeid)

原文由 Jean Pierre Imanirumva 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 708
2 个回答

似乎错误是这需要一个额外的参数(Key)

 Missing/incorrect key = parameter (it is an easy number to guess) ...

编辑:查看文档 https://www.py4e.com/code3/geodata/README.txt

示例 1: http://py4e-data.dr-chuck.net/json?key=42&address=Monash+University

示例 2: http://py4e-data.dr-chuck.net/json?key=42&address=Kokshetau+Institute+of+Economics+and+Management

原文由 Alejandro E. Rendon 发布,翻译遵循 CC BY-SA 4.0 许可协议

import urllib.error, urllib.request, urllib.parse
import json

target = 'http://py4e-data.dr-chuck.net/json?'
local = input('Enter location: ')
url = target + urllib.parse.urlencode({'address': local, 'key' : 42})

print('Retriving', url)
data = urllib.request.urlopen(url).read()
print('Retrived', len(data), 'characters')
js = json.loads(data)
print(json.dumps(js, indent = 4))
print('Place id', js['results'][0]['place_id'])

原文由 Saniya Shanshar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题