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里面调出程序使用起来也许会更爽.于 ...
随机推荐
- 算法之求质数(Java语言)
质数(Prime number) 又称素数,指在的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数). 算法原理 验证一个数字 n 是否为素数的一种简单但 ...
- Java Web开发中的转发和重定向的问题
Java Web的页面实现跳转有两种方式,一种是转发,另外一种是重定向.一般来说,转发比重定向快.重定向会经过客户端,转发却不会. 转发 request.getRequestDispatcher(&q ...
- How to safely downgrade or remove glibc with yum and rpm
Environment Red Hat Enterprise Linux 5 Red Hat Enterprise Linux 6 glibc, glibc-common, glibc-devel, ...
- d3js enter/exit深入了解
在 Data joins 章节我们演示了当data和dom element个数相同时的情况 <div id="content"> <div></div ...
- 使用RQShineLabel
使用RQShineLabel https://github.com/zipme/RQShineLabel 最终效果: 源码: // // RootViewController.m // UseText ...
- 通过u盘启动盘重装系统
前言:一直想通过u盘启动盘给旧本装个win7,但是发现网上完整的教程很少.这里分享给大家我重装的一些步骤和遇到的问题. 前期准备: 1.我们要准备一个容量在4G以上的U盘. 2.我们要将U盘中的重要数 ...
- 企业级Nginx基于虚拟主机别名的设置
生活中访问www.baidu.com和baidu.com是一个效果,同理也可以用rewrite 301跳转的思路(多发了一次请求过去)配置nginx.conf文件或者include里面的引用的文件,道 ...
- 点开无线显示"已连接 安全",但是点击下面无线图标却显示"无法连接internet",解决方案
管理员权限运行“命令提示符” 输入:netsh winsock reset 然后重启电脑即可
- redis-day1
1 Redis 概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Memcached缓存服务软件很像, ...
- ubuntu 13.04添加 flash_plugin
mv libflashplayer.so /usr/lib/mozilla/plugins