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