python实现百度地图API获取某地址的经纬度

综合编程 2018-01-27 阅读原文

申请百度API

1、打开网页 http://lbsyun.baidu.com/index.php?title=首页

选择功能与服务中的地图,点击左边的获取密匙,然后按照要求申请即可,需要手机和百度账号及邮箱认证。

激活后可看到后台页面,现在可以开始创建应用了,这里请求校验方式有两种,一种是白名单IP,另一种是SN校验(旁边有计算的说明),我选择SN校验:

成功后会获得自己的AK和SK,接下来说明如何计算sn

计算SN(python3.x)

from urllib import parse
import hashlib

def get_urt(addtress):

    # 以get请求为例http://api.map.baidu.com/geocoder/v2/?address=百度大厦&output=json&ak=你的ak
    queryStr = '/geocoder/v2/?address=%s&output=json&ak=你的ak' % addtress

    # 对queryStr进行转码,safe内的保留字符不转换
    encodedStr = parse.quote(queryStr, safe="/:=&?#+!$,;'@()*[]")

    # 在最后直接追加上yoursk
    rawStr = encodedStr + '你的sk'

    #计算sn
    sn = (hashlib.md5(parse.quote_plus(rawStr).encode("utf8")).hexdigest())
    
    #由于URL里面含有中文,所以需要用parse.quote进行处理,然后返回最终可调用的url
    url = parse.quote("http://api.map.baidu.com"+queryStr+"&sn="+sn, safe="/:=&?#+!$,;'@()*[]")   
    
    return url

该url可直接进行进行访问,返回的是json格式,如下

{"status":0,"result":{"location":{"lng":116.50104690641698,"lat":39.79092147361288},"precise":1,"confidence":80,"level":"地产小区"}}
Python_博客园

责编内容by:Python_博客园阅读原文】。感谢您的支持!

您可能感兴趣的

Python String contains Python String class has __contains__() function that we can use to check if it contains another string or not. Pytho...
python全栈开发-json和pickle模块(数据的序列化)... 一、什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。...
Python-Requests-裁判文书网 开门见山,直入主题,好久没更新了,搞一搞, 就来个 --裁判文书网 fiddler抓包: 打开fiddler 然后访问裁判文书网并选择筛选条件 image.png ...
python day two,while 一、运算符号 算数运算符:+ 、-、*、/、//(取整除)、%(去余)、** 比较运算符:>、=、<=、== 赋值运算符:=、+=、-=、/=、%=、**= 逻辑预算符:and、or、not 布尔值 成员...
Python selenium爬取微博内容 (一)编程环境 操作系统:Win 10 编程语言:Python 3.6 (二)安装selenium 这里使用selenium实现。 如果没有安装过python的selenium库,则安装命令如下 pip ins...