python3调取百度地图API输出某地点的经纬度信息
1. 查看API接口说明
地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

注:callback的功能暂未研究


2. 申请自己的ak(类似于连通百度地图服务器的钥匙,请勿泄露)

注:调试阶段,应用名称随意填写即可
3.1 将下面的url输入到浏览器中(更换成自己的ak),验证返回参数

页面显示
showLocation&&showLocation({"status":0,"result":{"location":{"lng":116.3084202915042,"lat":40.05703033345938},"precise":1,"confidence":80,"comprehension":100,"level":"道路"}})
注意:返回的格式不是json格式(json格式是直接大括号开始的)
介绍一个基于Chrome的小插件——FeHelper,可以自动美化代码,如下图所示

3.2 使用python验证 注意:需要将示例重点callback参数去掉,才能返回标准的json格式,否则json.loads()函数会报错
import requests
import json
import pprint url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'#隐藏掉了我的ak最后三位
res = requests.get(url) json_data = json.loads(res.text)
pprint.pprint(json_data)#格式化打印,可读性更佳
结果
注意:使用pprint可以格式化打印结果

3.3 继续研究
#查询某城市中的具体地点,两种写法均可
url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
url = 'http://api.map.baidu.com/geocoder/v2/?address=海淀区上地十街10号city=北京市&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
#查询某个城市或者某个省
url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
4. 用户输入地点,输出经纬度(此处遇到了一个大坑!)
在使用requests.get(url)方法时,会将提交的url中的中文进行编码(即便你的python和网页的编码都是utf-8),url中的中文会显示成如下
http://api.map.baidu.com/geocoder/v2/?address=%E5%8C%97%E4%BA%AC%E5%B8%82&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***
需要使用urllib.parse.unquote()解码,但是解码完了虽然输出的url是正确的,但是再次使用requests.get()时又不对
注意一点是:这个方法不能在params中使用(params是字典格式,整体不支持;单独针对字典里的中文字符串进行这个操作也没有用,因为在字典里是正确的。只是在进行requests.get()时进行了url编码)
解决方案:
不使用reques.get(url,params)形式,使用format
url = 'http://api.map.baidu.com/geocoder/v2/?address={}&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'.format(address)
5. 根据需求输出经度、纬度
全部代码
# -*- coding:utf-8 -*-
'''百度服务文档参考http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding'''
import requests
import json
import pprint
import urllib.parse #查询某城市中的具体地点,两种写法均可
#url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
#url = 'http://api.map.baidu.com/geocoder/v2/?address=海淀区上地十街10号city=北京市&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
#查询某个城市
#url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***' address = input('请输入地址:')
'''
par = {
'address':address,
'output':'json',
'ak':'piQGckMZTubVw29GiBT1BDwDjwztm***',
}
url = 'http://api.map.baidu.com/geocoder/v2/'
res = requests.get(url,par)
print(res.url)#中文进行了再编码
url1 = urllib.parse.unquote(res.url)
print(url1)#进行中文解码后,输出正确
res1 = requests.get(url1)
print(res1.url)#中文进行了再编码
''' url2 = 'http://api.map.baidu.com/geocoder/v2/?address={}&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'.format(address)
print(url2)
res2 = requests.get(url2)
print(res2)
json_data = json.loads(res2.text)
pprint.pprint(json_data)
longitude = json_data['result']['location']['lng']
latitude = json_data['result']['location']['lat']
print(longitude,latitude)
python3调取百度地图API输出某地点的经纬度信息的更多相关文章
- 【百度地图API】自行获取区域经纬度的工具
原文:[百度地图API]自行获取区域经纬度的工具 摘要:上一章教大家如何建立自己的行政区域地图.这次为大家提供一个,可视化选择区域,并且能自动生成经纬度代码的工具.工具的源代码完全公开,并且做了详尽的 ...
- Python使用百度地图API根据地名获取相应经纬度
今天有个需求,要根据地名获取经纬度坐标值. 于是我第一想法:打开百度地图,手动输入地名,获取.显然当地名较少时,可实施.然而,当地名较多时,此方法显然工作量很大. 于是,第二想法:代码获取,请求百度地 ...
- 百度地图api使用,简单搜索+经纬度定位+自定义消息窗口
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- java调用百度地图API依据地理位置中文获取经纬度
百度地图api提供了非常多地图相关的免费接口,有利于地理位置相关的开发,百度地图api首页:http://developer.baidu.com/map/. 博主使用过依据地理依据地理位置中文获取经纬 ...
- 使用百度地图API自动获取地址和经纬度
先上效果图,这是直接点击获取经纬度和地址的.没有做搜索的功能. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- python实现百度地图API获取某地址的经纬度
申请百度API 1.打开网页 http://lbsyun.baidu.com/index.php?title=首页 选择功能与服务中的地图,点击左边的获取密匙,然后按照要求申请即可,需要手机和百度账号 ...
- 根据百度地图API获取指定地点的经纬度
做项目时,遇到对地点获取地图中对应的经纬度,作一下笔记,以备以后直接使用 package com.hpzx.data; import java.io.BufferedReader; import ja ...
- 使用百度地图API查地理坐标
在网络编程中,我们会和API打交道.那么,什么是API?如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用. API是"Application Programming ...
- 百度地图API相关点
百度API接口:http://developer.baidu.com/map/jsdemo.htm#a1_1 百度地图API具体解释之地图标注:http://www.cnblogs.com/jz110 ...
随机推荐
- 《从0到1学习Flink》—— Data Sink 介绍
前言 再上一篇文章中 <从0到1学习Flink>-- Data Source 介绍 讲解了 Flink Data Source ,那么这里就来讲讲 Flink Data Sink 吧. 首 ...
- pat1055. The World's Richest (25)
1055. The World's Richest (25) 时间限制 400 ms 内存限制 128000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- spring boot注入error,Consider defining a bean of type 'xxx' in your configuration问题解决方案
经常出现这问题一定是非spring生态圈的@标签 没被spring引入,如mybatis等 因为在默认情况下只能扫描与控制器在同一个包下以及其子包下的@Component注解,以及能将指定注解的类自动 ...
- pycharm 更改字体and背景颜色
File-settings-Appearance&Behavior-Appearance-Theme File-settings-Editor-font
- Docker for mac 安装 kong
首先安装一个 PostgreSQL,选的版本是 9.5 $ docker run -d --name kong-database \ -p : \ -e "POSTGRES_USER=kon ...
- [Freemarker] Getting Start
Freemarker是一个模板引擎,在.NET中有类似的T4模板,FreeMarker对ASP.NET MVC也很友好,链接地址,引用官方的一幅图 模板+数据=视图 Following are the ...
- RabbitMQ 消息的可靠投递
mq 提供了两种方式确认消息的可靠投递 confirmCallback 确认模式 returnCallback 未投递到 queue 退回模式 在使用 RabbitMQ 的时候,作为消息发送方希望杜绝 ...
- iOS开发ReactiveCocoa学习笔记(三)
RAC常用用法: 1.监听按钮的点击事件: UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame ...
- Vue汇总(搬砖)
掘金: https://juejin.im/ Element: http://element-cn.eleme.io/#/zh-CN 验证码GEETEST---极验 : https://docs.ge ...
- Eucalyptus-利用镜像启动一个Windows Server 2008r2实例
1.前言 使用kvm制作Eucalyptus镜像(Windows Server 2008r2为例)——http://www.cnblogs.com/gis-luq/p/3990792.html 上一篇 ...