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

百度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. 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- ...

  2. visual studio code 插入当前时间插件 -- Insert Time Stamp

    使用方法:ctrl + f5 效果:

  3. Azure 中部署Gitlab的方法

    一.Azure 中创建Gitlab虚拟机(1).登陆Azure:打开Azure 官网,点击右侧上方的登陆Azure门户,输入Azure帐号与密码,点击 登陆 . (2).创建Gitlab虚拟机:登陆A ...

  4. exchange 删除邮件

    一 批量删除特定主题的邮件1.1 批量删除所有数据库中特定主题的邮件1) 群发了几封主题为“backup”的邮件: 2) 当前操作账号需要满足如下需求: a)该账号需属于Exchange Server ...

  5. 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 ...

  6. Permission Denial: opening provider 隐藏的android:exported属性的含义

    Permission Denial: opening provider 隐藏的android:exported属性的含义 2013-03-07 13:17 227人阅读 评论(0) 收藏 举报 场景: ...

  7. [COGS 2065]学数数

    2065. 学数数 ★★★☆   输入文件:jxthree.in   输出文件:jxthree.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 从前有一只咩,还有一只叽 ...

  8. c/c++ 中#ifndef和#endif的作用及使用

    有时候我们在编程的时候,希望有些代码在我们需要时编译,不需要时不编译,也就是让它快速注释,这时候即可以考虑#ifdef和#endif,它们会使我们的编译器进行选择性编译.使用方法如下: #includ ...

  9. [Assignment] C++1

    作业要求: 给出圆半径求面积. 使用cin和cout.用多个源文件处理函数. →代码在这里

  10. 14. Android框架和工具之 ImageLoader(图片加载)

    1. 这个图片加载框架网友很多都已经使用过,而且分析也很到位,这里我就不写了,直接引用别人,尊重别人的劳动成果. 2. 参考如下: (1)Android 开源框架Universal-Image-Loa ...