1 # Author:979 2 # blog addr:http://www.cnblogs.com/home979/ 3 import json 4 from urllib.request import urlopen, quote 5 import requests,csv 6 7 def getlnglat(address): 8 url = 'http://api.map.baidu.com/geocoder/v2/' 9 output = 'json' 10 ak = '百度地圖開放平台申請或者加QQ944485360請求作者幫助' #'你申請的密鑰***' 11 add = quote(address) #由於本文城市變量為中文,為防止亂碼,先用quote進行編碼 12 uri = url + '?' + 'address=' + add + '&output=' + output + '&ak=' + ak 13 req = urlopen(uri) 14 res = req.read().decode() #將其他編碼的字符串解碼成unicode 15 temp = json.loads(res) #對json數據進行解析 16 return temp 17 18 file = open('D:\\爬蟲數據分析\調用百度地圖api\point.json','w') #建立json數據文件 19 with open('D:\\爬蟲數據分析\調用百度地圖api\各區域房價.csv', 'r') as csvfile: #打開csv 20 reader = csv.reader(csvfile) 21 for line in reader: #讀取csv里的數據 22 # #忽略第一行 23 # if reader.line_num == 1: #由於第一行為變量名稱,故忽略掉 24 # # line是個list,取得所有需要的值 25 b = line[0].strip() #將第一列city讀取出來並清除不需要字符 26 c = line[1].strip()#將第二列price讀取出來並清除不需要字符 27 lng = getlnglat(b)['result']['location']['lng'] #采用構造的函數來獲取經度 28 lat = getlnglat(b)['result']['location']['lat'] #獲取緯度 29 str_temp = '{"lat":' + str(lat) + ',"lng":' + str(lng) + ',"count":' + str(c) +'},' 30 print(str_temp) #也可以通過打印出來,把數據copy到百度熱力地圖api的相應位置上 31 file.write(str_temp) #寫入文檔 32 file.close() #保存 33 #百度地圖web api使用說明:http://lbsyun.baidu.com/index.php?title=webapi/direction-api-v2 34 ''' 35 原作者:博觀厚積 36 鏈接:https://www.jianshu.com/p/773ff5f08a2c 37 來源:簡書 38 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 39 '''
