Python + 百度Api 通过地址关键字获得格式化的地址信息

本文详细介绍使用Python与百度地图API结合,实现地址解析到经纬度,再由经纬度反查详细地址的过程。通过实际代码演示,展示了如何注册并利用百度地图API进行地址解析,适用于各种复杂的地址输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

百度Api注册一个账号,创建一个应用后就会有一个`ak`的参数,就够了。

Python(号称胶水语言),此次所及的Demo是Python交互式编程的做法,只是为了方便展示。所得地址有可能是所在城市的地标地址,从功能层面来说已经尽力了。

 1 # -*- coding: utf-8 -*-
 2 
 3 import os
 4 import sys
 5 import json
 6 import urllib
 7 import requests
 8 from urllib import urlopen, quote
 9 
10 # Api
11 url = 'http://api.map.baidu.com/geocoder/v2/'
12 # 输出类型
13 output = 'json'
14 # 密钥
15 ak = 'ejxfGfepWQOUT2toG8GeGPN0rATxhBds'
16 # 为防止乱码,先进行编码
17 address = quote(sys.argv[1])
18 uri = url + '?' + 'address=' + address  + '&output=' + output + '&ak=' + ak 
19 # 请求第一次获得经纬度
20 req = requests.get(uri)
21 # 返回为json,进行解析
22 temp = json.loads(req.text)
23 # 获得经纬度
24 lat = temp['result']['location']['lat']
25 lng = temp['result']['location']['lng']
26 # 请求第二次用经纬度去获得位置信息
27 url_reback = 'http://api.map.baidu.com/geocoder/v2/?location='+bytes(lat)+','+bytes(lng)+'&output='+output+'&pois=1&ak='+ak
28 req_reback = requests.get(url_reback)
29 data = json.loads(req_reback.text)
30 
31 print "省:\t", data['result']['addressComponent']['province']
32 print "市:\t", data['result']['addressComponent']['city']
33 print "区:\t", data['result']['addressComponent']['district']
34 print "街:\t", data['result']['addressComponent']['street']
35 print "地址:\t", data['result']['formatted_address']

结果展示:

$ python test-baidu-api.py '石家庄'
省:    河北省
市:    石家庄市
区:    长安区
街:    中山东路
地址:    河北省石家庄市长安区中山东路216号
$ python test-baidu-api.py '郭守敬大街'
省:    河北省
市:    邢台市
区:    桥西区
街:    郭守敬北路
地址:    河北省邢台市桥西区郭守敬北路287号

 

转载于:https://www.cnblogs.com/yamboo/p/10772436.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值