我想通过谷歌方向API动态查询谷歌地图。例如,这个请求计算了从伊利诺伊州芝加哥到加利福尼亚州洛杉矶的路线,途经密苏里州乔普林和俄克拉荷马城的两个路点,OK:

http://maps.googleapis.com/maps/api/directions/json?origin=Chicago,IL&destination=Los+Angeles,CA&waypoints=Joplin,MO|Oklahoma+City,OK&sensor=false

它返回JSON格式的结果。

如何在Python中做到这一点?我想发送这样一个请求,接收结果并解析它。


当前回答

只需导入请求并使用json()方法:

source = requests.get("url").json()
print(source)

或者你可以用这个:

import json,urllib.request
data = urllib.request.urlopen("url").read()
output = json.loads(data)
print (output)

其他回答

我推荐使用很棒的请求库:

import requests

url = 'http://maps.googleapis.com/maps/api/directions/json'

params = dict(
    origin='Chicago,IL',
    destination='Los+Angeles,CA',
    waypoints='Joplin,MO|Oklahoma+City,OK',
    sensor='false'
)

resp = requests.get(url=url, params=params)
data = resp.json() # Check the JSON Response Content documentation below

JSON响应内容:https://requests.readthedocs.io/en/master/user/quickstart/#json-response-content

只需导入请求并使用json()方法:

source = requests.get("url").json()
print(source)

或者你可以用这个:

import json,urllib.request
data = urllib.request.urlopen("url").read()
output = json.loads(data)
print (output)

Requests有内置的.json()方法

import requests
requests.get(url).json()

由于其内置的JSON解码器,requests Python模块负责检索JSON数据和解码数据。下面是一个来自模块文档的例子:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...

因此,没有必要使用一些单独的模块来解码JSON。

import urllib
import json

url = 'http://maps.googleapis.com/maps/api/directions/json?origin=Chicago,IL&destination=Los+Angeles,CA&waypoints=Joplin,MO|Oklahoma+City,OK&sensor=false'
result = json.load(urllib.urlopen(url))