python获取高德地图POI——关键字搜索

本文主要内容是利用python获取高德地图上的感兴趣点(POIs)。

高德开放平台:https://lbs.amap.com/
下载POI分类编码和城市编码表
搜索POI相关文档:https://lbs.amap.com/api/webservice/guide/api/search

前言:虽说在我使用ChatGPT的第一天就遇到了bug,这让我觉得ChatGPT不过如此,但是在后续使用的过程中,体验感还行,因此将其作为一个工具辅助工作或者学习能够起到一定作用提高效率,但如果想要完全依赖ChatGPT是根本不现实的。所以大家合理使用ChatGPT。

今天就偷懒使用ChatGPT,让它帮我写个利用python获取高德地图POI的程序,试用了一下,虽然很简单但是能运行,于是就跟它交流反馈一步步改进了程序,满足了自己的需求。
当然这个程序特别简单,所以对ChatGPT来说应该不在话下。

主要思想就是利用python脚本结合关键词搜索法从高德地图获取特定区域内的 POI 数据

(对于小区域范围的POI数据获取还是比较方便的,但是如果范围较大建议使用多边形搜索法,否则容易获取到不全面的POI数据)

代码如下:

import pandas as pd
import requests

# 高德地图 Web API 的 URL
url = "https://restapi.amap.com/v3/place/text"

# 输入需要搜索的关键字列表
keywords_list = ["公园", "银行"]

for keywords in keywords_list:
    # API 的参数
    params = {
        # 高德地图的API_KEY(即你的密匙)
        "key": "********************",
        "keywords": keywords,
        # 需要搜索的城市范围 可以是城市中文、citycode、adcode
        "city": "北京市",
        "offset": "20",
        "page": "1",
        "extensions": "all"
    }

    poi_list = []
    page = 1

    while True:
        # 发送 GET 请求并获取结果
        response = requests.get(url, params=params)
        result = response.json()
        pois = result["pois"]
        poi_list.extend(pois)

        # 如果返回的 POI 数据少于 20 条,说明已经获取完了所有数据,退出循环
        if len(pois) < 20:
            break

        # 将 page 的值加 1,以便获取下一页的数据
        page += 1
        params["page"] = str(page)

    # 将 POI 数据保存到 DataFrame 中
    df = pd.DataFrame(poi_list)

    # 将 DataFrame 中的数据保存到 CSV 文件中
    filename = f"{keywords}_poi.csv"
    df.to_csv(filename, index=False)

使用时只需要将keywords_list"key""city"分别改为自己所需要搜索的关键词高德地图 Web 服务 API 密钥城市即可。

如果想要通过高德地图的分类代码types来搜索,将keywords参数改为types参数即可。
下面是示例代码:

import pandas as pd
import requests

# 高德地图 Web API 的 URL
url = "https://restapi.amap.com/v3/place/text"

# 输入需要搜索的分类代码
types = "060000|070000|080000"
# API 的参数
params = {
    # 高德地图的API_KEY(即你的密匙)
    "key": "*******************",
    "types": types,
    # 需要搜索的城市范围 可以是城市中文、citycode、adcode
    "city": "北京市",
    "offset": "20",
    "page": "1",
    "extensions": "all"
}

poi_list = []
page = 1

while True:
    # 发送 GET 请求并获取结果
    response = requests.get(url, params=params)
    result = response.json()
    pois = result["pois"]
    poi_list.extend(pois)

    # 如果返回的 POI 数据少于 20 条,说明已经获取完了所有数据,退出循环
    if len(pois) < 20:
        break

    # 将 page 的值加 1,以便获取下一页的数据
    page += 1
    params["page"] = str(page)

# 将 POI 数据保存到 DataFrame 中
df = pd.DataFrame(poi_list)

# 将 DataFrame 中的数据保存到 CSV 文件中
filename = f"{types}_poi.csv"
df.to_csv(filename, index=False)

使用时同样只需要将types"key""city"分别改为自己所需要搜索的分类代码高德地图 Web 服务 API 密钥城市即可。

注意:关键词搜索法获取到的POI数量最多不超过200条,因此当你观察到你的POI数据为190+的时候,就说明数据达到爬取极限了,但是POI数据并没有爬取完整,所以建议数据较大时使用多边形搜索法

这是利用多边形搜索法爬取POI的教程:python获取高德地图POI——多边形搜索

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值