POI数据哪里找?使用高德key获取周边数据

高德其实为开发者提供了专属key去获取它们的数据,但每天有限额,所以比较适合想要获取少量POI数据去进行使用的小伙伴~~

1.获取Key

所以怎么成为开发者并获取key呢?按照以下链接操作即可:(个人也可以

获取Key-创建工程-开发指南-Web服务 API | 高德地图API

高德提供了多种类型的数据,不同的类型也有不同的限额

本文提供的方法是周边查询,也就是在一个POI点指定的半径周围获取指定关键词的其它POI信息

关于其它POI搜索类型,详见搜索POI-API文档-开发指南-Web服务 API | 高德地图API

2.Python代码获取数据

1.导入模块

import requests
import json
import xlwt

 2.自定义方法

# 根据坐标获取poi数据
def getpois(center_name,polygon, keywords, radius):
    i = 1
    current_polygon_poi_list = []
    while True:  # 使用while循环不断分页获取数据
        result = getpoi_page(polygon, i, keywords, radius)
        result = json.loads(result)  # 将字符串转换为json

        if result['status'] != '1':  # 接口返回的状态不是1代表异常
            print('======爬取错误,返回数据:' + result)
            break
        pois = result['pois']
        if len(pois) < offset:  # 返回的数据不足分页页大小,代表数据爬取完
            current_polygon_poi_list.extend(pois)
            break
        current_polygon_poi_list.extend(pois)
        i += 1
    print('===========当前polygon:', center_name, polygon, ',爬取到的数据数量:', str(len(current_polygon_poi_list)))

    return current_polygon_poi_list


# 单页获取pois
def getpoi_page(polygon, page,keywords, radius):
    print(polygon)
    req_url = poi_search_url + "?key=" + amap_web_key + '&location=' + polygon + '&keywords=' + keywords + '&offset=' + str(
        offset)+ '&page=' + str(page) + '&radius=' + str(radius) + '&sortrule=distance' + '&output=json'
    # + '&types=' + type_list
    data = ''
    with requests.get(req_url) as response:
        data = response.text
        print(data)
    return data

# 数据写入excel
def write_to_excel(poilist, filename):
    # 一个Workbook对象,这就相当于创建了一个Excel文件
    book = xlwt.Workbook(encoding='utf-8', style_compression=0)
    sheet = book.add_sheet('0', cell_overwrite_ok=True)

    # 第一行(列标题)
    sheet.write(0, 0, 'id')
    sheet.write(0, 1, 'name')
    sheet.write(0, 2, 'lon')
    sheet.write(0, 3, 'lat')
    sheet.write(0, 4, 'address')
    sheet.write(0, 5, 'pname')
    sheet.write(0, 6, 'cityname')
    sheet.write(0, 7, 'adname')
    sheet.write(0, 8, 'type')
    sheet.write(0, 9, 'distance')
    sheet.write(0, 10, 'parent')
    for i in range(len(poilist)):
        sheet.write(i + 1, 0, poilist[i]['id'])
        sheet.write(i + 1, 1, poilist[i]['name'])
        lon = float(str(poilist[i]['location']).split(",")[0])
        lat = float(str(poilist[i]['location']).split(",")[1])


        sheet.write(i + 1, 2, lon)
        sheet.write(i + 1, 3, lat)
        sheet.write(i + 1, 4, poilist[i].get('address'))
        sheet.write(i + 1, 5, poilist[i].get('pname'))
        sheet.write(i + 1, 6, poilist[i].get('cityname'))
        sheet.write(i + 1, 7, poilist[i].get('adname'))
        sheet.write(i + 1, 8, poilist[i]['type'])
        sheet.write(i + 1, 9, poilist[i]['distance'])
        sheet.write(i + 1, 10, poilist[i]['parent'])

    book.save(filename)

3.执行主代码

根据自己的需求,修改amap_web_key,filename,polygon_list,keywords,radius即可

if __name__ == '__main__':

    amap_web_key = '...'  # 改:高德地图官网申请的Web API KEY 
    url = 'https://restapi.amap.com/v3/place/around?key=' + amap_web_key
    
    filename = r'C:/...'  # 改:爬取到的数据写入的EXCEL路径

    polygon_list = {...}  # 改:名称+经纬度字典,如:{'coco':'123.12,45.45'}
    
    
    # 查询关键字
    keywords = '奶茶'    # 改:POI周围寻找的类别

    # 查询半径
    radius = 1000

    poi_search_url = "https://restapi.amap.com/v3/place/around"  # URL
    offset = 25  # 分页请求数据时的单页大小

    print('开始爬取...')
    all_poi_list = []  # 爬取到的所有数据

    for center_name in polygon_list:
        polygon=polygon_list[center_name]
        polygon_poi_list = getpois(center_name,polygon, keywords, radius)
        all_poi_list.extend(polygon_poi_list)

    print('爬取完成,总的数量:', len(all_poi_list))

    write_to_excel(all_poi_list, filename)

    print('写入成功')

 最终的excel文件格式,可以通过修改代码,获取其它的字段信息,返回的参数信息详见搜索POI-API文档-开发指南-Web服务 API | 高德地图API

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackie_kk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值