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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章