HTTP请求和Python中的JSONparsing

我想通过Google路线APIdynamic查询Google地图。 例如,这个请求计算从芝加哥,伊利诺伊州到洛杉矶,加利福尼亚州通过乔普林,密苏里州和俄克拉荷马城的两个航点的航线,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中做到这一点? 我想发送这样的请求,接收结果并parsing它。

我build议使用真棒请求库:

import json, 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 = json.loads(resp.text) 

由于其内置的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。

requests具有内置的.json()方法

 import requests requests.get(url).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)) 

使用请求库,漂亮地打印结果,以便更好地find要提取的键/值,然后使用嵌套for循环来parsing数据。 在这个例子中,我逐步提取行车路线。

 import json, requests, pprint 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' ) data = requests.get(url=url, params=params) binary = data.content output = json.loads(binary) # test to see if the request was valid #print output['status'] # output all of the results #pprint.pprint(output) # step-by-step directions for route in output['routes']: for leg in route['legs']: for step in leg['steps']: print step['html_instructions']