使用高德API批量获取地址经纬度数据(Python实现指南)
一、背景与目标
需求场景:
批量获取Excel表格中地址的经纬度坐标,用于地图可视化或数据分析。
解决的问题:
地址标准化:非结构化地址需清洗为API可解析的格式。
API调用限制:并发请求、日调用量限制。
错误处理:应对API返回的多种错误类型(如密钥错误、并发超限、地址解析失败等)
核心代码逻辑:
读取Excel文件,遍历地址列。
调用高德地理编码API。
解析返回的JSON数据,提取经纬度。
错误处理与重试机制。
代码优化点:
添加请求间隔(如time.sleep(0.5))。
记录失败地址,支持重试和二次修改。
二、完整流程与步骤
1.环境准备(安装Python、VSCode及扩展插件)
下载Python:
参考CSDN文章:今天给大家带来Python的下载安装教程!
下载VS Code:
安装扩展插件:

2.API获取
注册开发者账号:
创建应用并获取 API Key :


3.数据准备
数据格式:
将目标数据保存为Excel文件(.xlsx),列名清晰(如:“序号” “名称” “地址” 等)。
如需从网页中获取表格可参考CSDN文章:数据获取|如何将网页里的表格导出成Excel表格
地址清洗:
确保地址包含省市区(如“广东生深圳市南山区科技园”)。(tip:没有“省”“市”也没关系,如果报错则需相应添加)
移除模糊词(如“附近”“对面”)、特殊符号(如#、())。(tip:可以借助Excel的“查找和选择”功能批量处理,如图所示)
4.代码实现
复制粘贴如下代码,注意:代码中的API key和表格名称都需要替换成自己的。
import requests
import pandas as pd
import time
# 高德API参数
key = "你的API Key"
url = "https://restapi.amap.com/v3/geocode/geo"
# 读取Excel数据
df = pd.read_excel("你的表格名称及后缀")
# 请求参数
max_retries = 3
retry_delay = 1 # 秒
request_interval = 0.5 # 秒
failed_addresses = []
for index, row in df.iterrows():
address = row["地址"] #如果报错,可检查这里表格储存地址的列名是否对应
params = {
"address": address,
"key": key,
}
for attempt in range(max_retries):
try:
response = requests.get(url, params=params)
result = response.json()
if result["status"] == "1" and result["geocodes"]:
location = result["geocodes"][0]["location"]
lng, lat = location.split(",")
df.at[index, "经度"] = lng
df.at[index, "纬度"] = lat
break
else:
#如果报错,可复制粘贴“返回结果”的内容,询问AI进行调试
print(f"地址 {address} 第{attempt+1}次尝试失败:{result.get('info')},返回结果:{result}")
time.sleep(retry_delay)
except Exception as e:
print(f"请求异常:{e}")
time.sleep(retry_delay)
else:
df.at[index, "经度"] = "失败"
df.at[index, "纬度"] = "失败"
failed_addresses.append(address)
time.sleep(request_interval) # 控制请求频率
# 保存结果
df.to_excel("你的表格名称_带坐标.xlsx", index=False)
# 保存失败地址
if failed_addresses:
with open("failed_addresses.txt", "w") as f:
f.write("\n".join(failed_addresses))
print(f"有{len(failed_addresses)}个地址解析失败,已保存到文件。")
pip install pandas requests openpyxl
python test.py
4.常见报错与解决方案
希望以上流程总结和复用代码对大家有所帮助,欢迎各位在评论区指正或留下新遇到的问题,一起交流进步!
作者:千年奶酪