作者:国服帅座 经济学在读硕士
微信公众号:统计之家
你吃肯德基,我点麦当劳。本是替代品,却众口难调。每个人都有独特的偏好,都有一份要坚守的情怀。高德与百度,你心仪哪款呢?
认识百度地图API
百度与高德在地理编码API上的主要差异,个人归纳如下:a、二者体系独立,所得的经纬度数据略有不同
b、百度默认输出格式为xml,而高德默认输出格式为json
c、高德经纬度数据是连着的,用逗号隔开;百度经度与纬度是分别显示的
进入百度地图开放平台,点击“开发文档”,点击“Web服务API”,点击“地理编码”。
与高德地图API类似,百度地图API中也存在一些参数,地理编码必须要有的参数有两个:百度密钥(ak)和地址(address)。另外,作者希望输出的格式是json的,因而output参数也应当关注。
爬取单个数据import requestsimport jsonurl = 'http://api./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
经纬度就在字典里面,让我们根据键来取值吧。coords = jd['result']['location']coords
这便是百度地图显示的启东市经度与纬度,上文中用高德爬取的启东市经纬度数据如下(见上文最后一张图):(121.657441, 31.808026)
观察可得,在数值上,小数点后第二位开始出现差异;在形式上,经纬度是否分别输出也有差异。至于经纬度究竟是分开好,还是连着好,其实不用太纠结,各自都有用得着的地方。
整合为函数
在整合为函数后,再把启东市作为自变量代入,检查函数是否正确,确认无误。
for循环批量处理