由于用户输入是千奇百怪的,除了格式语法不合要求之外的,即便是所谓的合法数据也是五花八门。尤其是地址,所有才由此文。

百度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 通过地址关键字获得格式化的地址信息的更多相关文章

  1. 百度api:根据经纬度获取地理位置信息

    调用百度api,根据经度和纬度获取地理位置信息,返回Json. C#代码: using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Syste ...

  2. Python爬虫之百度API调用

    调用百度API获取经纬度信息. import requests import json address = input('请输入地点:') par = {'address': address, 'ke ...

  3. java工具类(一)之服务端java实现根据地址从百度API获取经纬度

    服务端java实现根据地址从百度API获取经纬度 代码: package com.pb.baiduapi; import java.io.BufferedReader; import java.io. ...

  4. 百度api查询多个地址的经纬度的问题

    在使用百度api查询多个地址的经纬度的时候,由于百度api提供的经纬度查询方法是回调函数,并且后续操作必须等经纬度获取完成才能进行,问题就存在于怎么判断所有地点是否都回调完成了,问了之前的一个前端大佬 ...

  5. java根据地址获取百度API经纬度

    java根据地址获取百度API经纬度(详细文档) public void getLarLng(String address) throws Exception { String ak = " ...

  6. Python汉英/英汉翻译(百度API/有道API)

    一.百度API实现 Step1:申请API Key 以前用过BAE,已经有了Api Key,没有的可以去申请 Step2:挺简单,直接看实现的代码吧 ```python #coding:utf-8 i ...

  7. .net根据经纬度获取地址(百度api)

    private string GetAddress(string lng, string lat) { try { string url = @"http://api.map.baidu.c ...

  8. 百度地图热力图--批量地址转换应用(基于百度api)

    需求:把外卖订餐地址做个用户分布热力图 思路分析:第一步去百度地图api开放平台找例子 http://lbsyun.baidu.com/jsdemo.htm#c1_15 首先从百度API的demo例子 ...

  9. python使用百度api翻译中英文

    python使用百度api翻译中英文 写程序取变量名的时候,常常需要翻译单词,或者将中文翻译成英语.有道词典,必应词典都很好,可是...命令行习惯了还是觉得用在cmd里面调出程序使用起来也许会更爽.于 ...

随机推荐

  1. linux下pgAdmin4安装

    首先到pgAdmin4官方网站下载安装包:https://www.pgadmin.org/download/ 我下载的是3.0; 到文件所在目录执行安装命令: sudo pip install ./p ...

  2. MongoDB命令及其MongoTemplate的混合讲解

    前言 前面讲解了如何在springboot中集成mongodb,本文将讲解mongodb命令操作及其MongoTemplate的使用.穿插的目的在于不用先去寻找mongodb的命令又去寻找在java中 ...

  3. Spring boot整合Swagger

    本文github位置:https://github.com/WillVi/springboot-swagger2-demo 环境准备 JDK版本:1.8 Spring boot版本:1.5.16 Sw ...

  4. C# 冒泡排序法、插入排序法、选择排序法

    冒泡排序法 是数组等线性排列的数字从大到小或从小到大排序. 以从小到大排序为例. 数据 11, 35, 39, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, ...

  5. 用timer自定义计划任务时间

    应业务需求,需要将指定程序,按照指定时间进行运行, 而windows计划任务最小运行间隔时间为1分钟,完全不能满足当前需求, 有两种方案,一种是安装win服务方式,考滤到维护困难,另一种是timer方 ...

  6. php性能调优

    第一章  针对系统调用过多的优化 我这次的优化针对syscall调用过多的问题,所以使用strace跟踪apache进行分析. 1.  apache2ctl -X & 使用-X(debug)参 ...

  7. 1001.A+B Format (20)解题描述

    1. 作业链接 2. 解题的思路过程 首先这是道简单的计算题,要求计算a+b的值. 看初值条件,将a和b的取值限制在一个区间内. 本题难点和重点是如何把输出值形成题目要求的格式. 因为负数可通过在前面 ...

  8. C++课堂作业(2)

    github的链接: https://github.com/deepYY/object-oriented/tree/master/PAT.1025 题目 给定一个常数K以及一个单链表L,请编写程序将L ...

  9. Current urgent plan(3/30)

    1. resume improving 1.1 project from Udacity 1.2 project from class 1.3 find career center's help 1. ...

  10. 无法执行程序。所执行的命令为 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /noconfig /fullpaths @"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\b411ea32\b48a9fb\aun5r0xd.c

    解决方案 将应用程序池进程模型中的标识设为“LocalSystem”即可.