python解析百度地图api返回的json

    今天我使用百度地图api获取地址,我是通过发送HTTP服务实现的(当然这其中肯定要使用自己的秘钥),返回的格式你可以自己决定,可以是xml或者json。

我这里提供一个例子吧:


而百度地图提供的例子是这样的:

http://api.map.baidu.com/geocoder/v2/
?ak=E4805d16520de693a3fe707cdc962045
&callback=renderReverse
&location=39.983424,116.322987
&output=json
&pois=1

我提取返回的json中的位置信息,提取方法代码如下:

#encoding=utf8

import json
import urllib2
import httplib

#import urllib
url = 'http://api.map.baidu.com/geocoder/v2/'
ak = 'XXX' #百度地图api密钥
#back='&callback=renderReverse&location='
back='&location='
location='34.992654,108.589507'
output = '&output=json&pois=0'

url = url + '?' + ak + back + location + output
temp = urllib2.urlopen(url)
#console.log(data)
hjson = json.loads(temp.read())
location = hjson["result"]["formatted_address"] #省,市,县
print location
info = hjson["result"]["sematic_description"]  #详细描述
print info

刚刚开始的时候我是按照百度地图提供的例子去拼接 url 的,于是每次我调用的时候总是会提示一下错误的:


我搜了很多这个问题的解决方案,都说是格式问题,需要ASCLL的格式才能解析,解决方法是修改配置文件的编码方式,但是说的不清楚,根本就无法动手,所以我真的没辙了,我最后是看看百度地图api给的文档,无意中观察到了他给的例子是带返回类型的,于是我将url的内容修改了:

原内容是这样的:

http://api.map.baidu.com/geocoder/v2/
?ak=E4805d16520de693a3fe707cdc962045
&callback=renderReverse
&location=39.983424,116.322987
&output=json
&pois=1
修改后的是:(除掉callback就行)

http://api.map.baidu.com/geocoder/v2/
?ak=E4805d16520de693a3fe707cdc962045
&location=39.983424,116.322987
&output=json
&pois=1
再次执行的时候,正确解析出,而且提取出内容了。



至此提取成功,问题解决,写这个真的是因为我在解决这个问题的时候搜了很多信息,都是没有解决方案

发布了194 篇原创文章 · 获赞 88 · 访问量 45万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章