使用之前,需要注冊一個百度地圖開發者賬號,最好申請一個認證以獲取更高的使用配額和並發上限。
注冊之后,申請一個應用,獲得一個ak(密鑰),並填寫ip地址白名單。(這里我使用0.0.0.0/0,查了自己的ip但百度好像總是說我ip不對,算了)
百度地圖api的原理是,把你想輸入的參數(調用功能、具體參數)體現在url中,把url打開,會返回一個json文件(也可xml文件,但默認json,且方便),這個json文件內包含了你想要的各種信息。
一般最常用的就是poi(point of interests)檢索了,我們以此為例,嘗試一下地點檢索功能。
import json import requests import pandas as pd feature_data = [] query = '銀行' zx = [31.15,121.41]; ys = [31.30,121.60] zb = str(zx[0]) + ',' + str(zx[1]) + ',' + str(ys[0]) + ',' + str(ys[1]) ak = '我的密鑰(這個得保密,不然每日額度可能直接被別人用了)' def url_to_file(url): data = requests.get(url).text hjson = json.loads(data) if hjson['message'] == 'ok': datalist = hjson['results'] for each in datalist: feature_data.append(each) for k in range(100): url = 'http://api.map.baidu.com/place/v2/search?query=' + query + '&bounds=' + zb + '&page_size=20&page_num=' + str( k) + '&output=json&ak=' + ak url_to_file(url) feature = pd.DataFrame(feature_data) feature.to_csv(str(query)+'_按矩形.csv')
然而,打開csv文件,會出現亂碼。
這時把文件用記事本方式打開->另存為->換一種字符編碼(我將utf-8變為ANSI),便可以打開了。