python网络爬虫笔记21:天地图解析服务调用教程
突然接到一个任务,要将一堆地址转化成经纬度,就试了一下使用天地图的地理编码解析服务。
官方提供的API如下:
解析结果的含义为:
其中的score没有解析,我猜测这个说的是返回结果的准确度;例如score=30表示这个地址的准确度只有30%。
整个过程倒是不难,但是主要注意http://api.tianditu.gov.cn/geocoder?ds={"keyWord":"北京市海淀区莲花池西路28号"}&tk=您的密钥
请求参数的ds是 {"keyWord":"你的地址"},一定要构造对,不然就会报错。
以下是我测试完之后,可以正常运行的代码:
import requests
import json
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36',
}
# https://api.tianditu.gov.cn/geocoder?ds={"keyWord":大雁塔北广场}&tk=901address = '北京市朝阳区建国门外大街10号'
tk = '901'
para = {'ds':'{"keyWord":'+ address + '}', 'tk':tk}
url = f'https://api.tianditu.gov.cn/geocoder'
respone = requests.get(url=url, headers=headers,params=para)
respone.encoding = 'UTF-8'
results = json.loads(respone.text)
if results['msg'] == 'ok':location = results['location']print(f'{location["lon"]},{location["lat"]}')
# print(results)
在浏览器验证的结果
程序输出的结果:
两个结果是是一致的。但是直接写大雁塔北广场,会报如下错误:
{'msg': '权限类型错误', 'resolve': '不支持的key类型!', 'code': 18}
而浏览器自己解析是正确的,这一点还挺奇怪的。