百度地图api的简单应用(一):POI检索
使用之前,需要注册一个百度地图开发者账号,最好申请一个认证以获取更高的使用配额和并发上限。
注册之后,申请一个应用,获得一个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),便可以打开了。