Python + 百度Api 通过地址关键字获得格式化的地址信息
由于用户输入是千奇百怪的,除了格式语法不合要求之外的,即便是所谓的合法数据也是五花八门。尤其是地址,所有才由此文。
百度Api注册一个账号,创建一个应用后就会有一个`ak`的参数,就够了。
Python(号称胶水语言),此次所及的Demo是Python交互式编程的做法,只是为了方便展示。所得地址有可能是所在城市的地标地址,从功能层面来说已经尽力了。
# -*- coding: utf-8 -*- import os import sys import json import urllib import requests from urllib import urlopen, quote # Api url = 'http://api.map.baidu.com/geocoder/v2/' # 输出类型 output = 'json' # 密钥 ak = 'ejxfGfepWQOUT2toG8GeGPN0rATxhBds' # 为防止乱码,先进行编码 address = quote(sys.argv[1]) uri = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak # 请求第一次获得经纬度 req = requests.get(uri) # 返回为json,进行解析 temp = json.loads(req.text) # 获得经纬度 lat = temp['result']['location']['lat'] lng = temp['result']['location']['lng'] # 请求第二次用经纬度去获得位置信息 url_reback = 'http://api.map.baidu.com/geocoder/v2/?location='+bytes(lat)+','+bytes(lng)+'&output='+output+'&pois=1&ak='+ak req_reback = requests.get(url_reback) data = json.loads(req_reback.text) print "省:\t", data['result']['addressComponent']['province'] print "市:\t", data['result']['addressComponent']['city'] print "区:\t", data['result']['addressComponent']['district'] print "街:\t", data['result']['addressComponent']['street'] print "地址:\t", data['result']['formatted_address']
结果展示:
$ python test-baidu-api.py '石家庄' 省: 河北省 市: 石家庄市 区: 长安区 街: 中山东路 地址: 河北省石家庄市长安区中山东路216号 $ python test-baidu-api.py '郭守敬大街' 省: 河北省 市: 邢台市 区: 桥西区 街: 郭守敬北路 地址: 河北省邢台市桥西区郭守敬北路287号
Python + 百度Api 通过地址关键字获得格式化的地址信息的更多相关文章
- 百度api:根据经纬度获取地理位置信息
调用百度api,根据经度和纬度获取地理位置信息,返回Json. C#代码: using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Syste ...
- Python爬虫之百度API调用
调用百度API获取经纬度信息. import requests import json address = input('请输入地点:') par = {'address': address, 'ke ...
- java工具类(一)之服务端java实现根据地址从百度API获取经纬度
服务端java实现根据地址从百度API获取经纬度 代码: package com.pb.baiduapi; import java.io.BufferedReader; import java.io. ...
- 百度api查询多个地址的经纬度的问题
在使用百度api查询多个地址的经纬度的时候,由于百度api提供的经纬度查询方法是回调函数,并且后续操作必须等经纬度获取完成才能进行,问题就存在于怎么判断所有地点是否都回调完成了,问了之前的一个前端大佬 ...
- java根据地址获取百度API经纬度
java根据地址获取百度API经纬度(详细文档) public void getLarLng(String address) throws Exception { String ak = " ...
- Python汉英/英汉翻译(百度API/有道API)
一.百度API实现 Step1:申请API Key 以前用过BAE,已经有了Api Key,没有的可以去申请 Step2:挺简单,直接看实现的代码吧 ```python #coding:utf-8 i ...
- .net根据经纬度获取地址(百度api)
private string GetAddress(string lng, string lat) { try { string url = @"http://api.map.baidu.c ...
- 百度地图热力图--批量地址转换应用(基于百度api)
需求:把外卖订餐地址做个用户分布热力图 思路分析:第一步去百度地图api开放平台找例子 http://lbsyun.baidu.com/jsdemo.htm#c1_15 首先从百度API的demo例子 ...
- python使用百度api翻译中英文
python使用百度api翻译中英文 写程序取变量名的时候,常常需要翻译单词,或者将中文翻译成英语.有道词典,必应词典都很好,可是...命令行习惯了还是觉得用在cmd里面调出程序使用起来也许会更爽.于 ...
随机推荐
- Software Testing Techniques LAB 01: test Junit and Eclemma
1. Installing 1. Install Junit and hamcrest First, I download the Junit-4.12.jar and hamcrest-core- ...
- visual studio code 插入当前时间插件 -- Insert Time Stamp
使用方法:ctrl + f5 效果:
- Azure 中部署Gitlab的方法
一.Azure 中创建Gitlab虚拟机(1).登陆Azure:打开Azure 官网,点击右侧上方的登陆Azure门户,输入Azure帐号与密码,点击 登陆 . (2).创建Gitlab虚拟机:登陆A ...
- exchange 删除邮件
一 批量删除特定主题的邮件1.1 批量删除所有数据库中特定主题的邮件1) 群发了几封主题为“backup”的邮件: 2) 当前操作账号需要满足如下需求: a)该账号需属于Exchange Server ...
- August 04th 2017 Week 31st Friday
Love is a vine that grows into our hearts. 爱是长在我们心里的藤蔓. What is love? Maybe no one can explain it cl ...
- Permission Denial: opening provider 隐藏的android:exported属性的含义
Permission Denial: opening provider 隐藏的android:exported属性的含义 2013-03-07 13:17 227人阅读 评论(0) 收藏 举报 场景: ...
- [COGS 2065]学数数
2065. 学数数 ★★★☆ 输入文件:jxthree.in 输出文件:jxthree.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 从前有一只咩,还有一只叽 ...
- c/c++ 中#ifndef和#endif的作用及使用
有时候我们在编程的时候,希望有些代码在我们需要时编译,不需要时不编译,也就是让它快速注释,这时候即可以考虑#ifdef和#endif,它们会使我们的编译器进行选择性编译.使用方法如下: #includ ...
- [Assignment] C++1
作业要求: 给出圆半径求面积. 使用cin和cout.用多个源文件处理函数. →代码在这里
- 14. Android框架和工具之 ImageLoader(图片加载)
1. 这个图片加载框架网友很多都已经使用过,而且分析也很到位,这里我就不写了,直接引用别人,尊重别人的劳动成果. 2. 参考如下: (1)Android 开源框架Universal-Image-Loa ...