Python调用百度地图API爬取经纬度

浏览: 2870

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

微信公众号:统计之家


你吃肯德基,我点麦当劳。本是替代品,却众口难调。每个人都有独特的偏好,都有一份要坚守的情怀。高德与百度,你心仪哪款呢?

认识百度地图API

百度与高德在地理编码API上的主要差异,个人归纳如下:

a、二者体系独立,所得的经纬度数据略有不同
b、百度默认输出格式为xml,而高德默认输出格式为json
c、高德经纬度数据是连着的,用逗号隔开;百度经度与纬度是分别显示的

进入百度地图开放平台,点击“开发文档”,点击“Web服务API”,点击“地理编码”。

与高德地图API类似,百度地图API中也存在一些参数,地理编码必须要有的参数有两个:百度密钥(ak)和地址(address)。另外,作者希望输出的格式是json的,因而output参数也应当关注。

爬取单个数据

import requests
import json
url = 'http://api.map.baidu.com/geocoder/v2/'
params = { 'address' : '启东市',           # 以江苏省启东市为例
          'ak' : '你的百度密钥',             # 百度密钥
          'output': 'json'     }              # 输出结果设置为json格式
res = requests.get(url,params)
res.text

接下来,我们要做的是,将json格式转化为Python字典格式,方便提取。

jd = json.loads(res.text)     # 将json格式转化为Python字典
jd

image.png

经纬度就在字典里面,让我们根据键来取值吧。

coords = jd['result']['location']
coords

image.png

这便是百度地图显示的启东市经度与纬度,上文中用高德爬取的启东市经纬度数据如下(见上文最后一张图):(121.657441, 31.808026)

观察可得,在数值上,小数点后第二位开始出现差异;在形式上,经纬度是否分别输出也有差异。至于经纬度究竟是分开好,还是连着好,其实不用太纠结,各自都有用得着的地方。

整合为函数

在整合为函数后,再把启东市作为自变量代入,检查函数是否正确,确认无误。

for循环批量处理



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

0 个评论

要回复文章请先登录注册