百度地图api的简单应用(一):POI检索

时间:2024-04-15 16:11:33

使用之前,需要注册一个百度地图开发者账号,最好申请一个认证以获取更高的使用配额和并发上限。

注册之后,申请一个应用,获得一个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),便可以打开了。