Python调用高德地图API爬取经纬度

浏览: 7528

作者:国服帅座  经济学在读硕士

知乎专栏:https://zhuanlan.zhihu.com/c_1051263791760863232

认识高德地图API

比起普通的静态网页爬虫,爬高德地图的麻烦之处在于API中存在参数。这需要我们首先要对高德地图API有个基本的了解。

登录高德地图API网站,点击“开发文档”,找到下图中的“地理/逆地理编码API”处,点击进入。

我们可以看到一个API,其问号前面的部分是固定不变的,而问号后面的是参数部分。高德地图此处罗列了7个参数,包括2个必选参数,以及5个可选参数。这两个必选参数,一个是高德key,需要注册;另一个是参数address,比如人民公园。你也许需要的是南京的人民公园的经纬度信息,凑巧的是,北京也有一个人民公园,天津也有一个人民公园。参数city的存在可以限定地址信息的范围,确保你获取的是南京的人民公园经纬度。参数output值得关注,默认的输出结果是json格式。

如果我需要的不是某个建筑的经纬度,而是某个行政区域的呢?打个比方,我不想要南京的人民公园的经纬度,我想要的是南京市的经纬度。这样也是可以实现的,只需要参数address直接填入“南京市”即可,这便不需要参数city了。这样得出的经纬度,一般是各地行政中心所在的经纬度。


爬取单个数据

下面,以南京为例,爬取其经纬度。

import requests
import json
url = 'https://restapi.amap.com/v3/geocode/geo'   # 输入API问号前固定不变的部分
params = { 'key': '你的高德密钥',
          'address': '南京市'   }                # 将两个参数放入字典
res = requests.get(url, params)
res.text

输出结果如下:

输出结果是json格式,需要用到json模块将其转化为Python字典。

jd = json.loads(res.text)
jd

输出结果如下:

image.png

coords = jd['geocodes'][0]['location']
coords

输出结果如下:

这,便是南京市坐标。


整合为函数

为了方便起见,将上面过程整合为函数。

import requests
import json
def coords(city):
   url = 'https://restapi.amap.com/v3/geocode/geo'   # 输入API问号前固定不变的部分
   params = { 'key': '你的高德密钥',                
              'address': city   }                    # 将两个参数放入字典
   res = requests.get(url, params)
   jd =  json.loads(res.text)
   return jd['geocodes'][0]['location']

下面,在自变量位置输入“南京市”,检验下函数正确性。


for循环批量处理

当大批量处理时,使用for循环即可。



推荐 0
本文由 Economicoder 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册