通过高德API提取地址中的省市区
电商有个困扰是发货的时候,对方提供的地址在省市区部分有缺失,自己要查找起来很麻烦。有没有一个方法能直接获取到一个地址的省市区呢?
比较极限的例子就是没有任何省市区,只有一个地名。比如输入深圳北站,返回广东省、深圳市、龙华区。
我猜测地图API应该可以实现。就问了Gemini。回答的答案居然一次性运行成功,没有编码错误。牛!
我用了高德的API,进驻高德开放平台,创建一个应用即可。而且获取省市区的API只需要KEY就行,没有复杂的鉴权过程。属于“地里编码”类型,每日调用限额5000次。
Gemini回答
以下 API 能够根据地址字符串返回省、市、区:
-
高德地图开放平台 地址解析 API
-
百度地图开放平台 地址解析 API
API 使用方法
高德地图开放平台
GET https://restapi.amap.com/v3/geocode/geo?address=深圳北站&key={{高德地图API Key}}
百度地图开放平台
GET https://api.map.baidu.com/geocoding/v3/?address=深圳北站&output=json&ak={{百度地图API Key}}
API 返回数据示例
高德地图开放平台
{
"count": 1,
"info": "OK",
"infocode": "10000",
"geocodes": [
{
"formatted_address": "广东省深圳市龙华区梅林街道龙胜社区万丰路一号",
"adcode": "440306",
"country": "中国",
"province": "广东省",
"city": "深圳市",
"district": "龙华区",
"township": "梅林街道"
}
]
}
百度地图开放平台
{
"status": "OK",
"result": {
"address": "深圳北站东广场",
"location": {
"lat": 22.60116700193512,
"lng": 114.06170188547761
},
"precise": 1,
"confidence": 70,
"level": "地铁站",
"formatted_address": "广东省深圳市龙华区梅林街道龙胜社区万丰路一号(近深圳北站东广场)",
"business": [],
"poiRegions": [],
"semg": [],
"adname": "广东省深圳市龙华区"
}
}
示例代码
Python 示例(基于高德地图开放平台)
import requests
def get_address_info(address_string):
url = "https://restapi.amap.com/v3/geocode/geo"
params = {
"address": address_string,
"key": "YOUR_GAODE_API_KEY" # 替换为你的高德地图 API Key
}
response = requests.get(url, params=params)
data = response.json()
if data["info"] == "OK":
return data["geocodes"][0]["province"], data["geocodes"][0]["city"], data["geocodes"][0]["district"]
else:
return None
address_info = get_address_info("深圳北站")
print(address_info) # 输出:('广东省', '深圳市', '龙华区')