python学习笔记 – 使用百度地图api,根据给定经纬度获取城市信息
py小白一枚,用于记录分享个人学习心得,专业的大佬们不要嘲笑啊T T
参考学习资料1:python地址解析经纬度,城市
参考学习资料2:Python调用百度地图API爬取经纬度
Contents
百度地图API的使用
简介
百度地图开放平台
地址:https://lbsyun.baidu.com/
注册方法

使用方法
一句话总结:要用什么API,就看什么API的服务文档
我们需要使用的是正/逆地理编码API
具体步骤如下

在“web服务API”页面选择,“正/逆地理编码”。
服务文档:
所以需要先获取ak
点击页面右上角“控制台”,“应用管理”,“我的应用”
在“我的应用”界面,点击“创建应用”,填好相关信息即可生成你的应用
在应用列表里找到相应的应用,即可复制AK
在python中实现
本人使用anaconda自带的python3.9,编译使用自带的spider,具体安装方法可以参考别人的笔记
具体程序
import requests
import json
with open("x_y.txt","r", encoding="utf-8") as fr:
with open("x_y_city.txt", "w", encoding="utf-8") as fw:
for line in fr.readlines():
# 去除换行符
line = line.strip('\n').replace('#',' ')
# 去除特殊字符
line1 = line.replace('#', ' ').replace('/',' ')
#生成名为line_str的列表,列表有三个值,接下来分别将三个值存成三个要用的参数
line_str=line1.split(",")
# 几个参数设置
ak = "AKXXXXXX" #这个ak就是我们刚刚复制的ak号,把AKXXXXXX几个字母替换成复制的ak号即可
id = line_str[0] #这个id是我们用来计数的,最后print出来看写到哪一行了
lng = line_str[1]
lat = line_str[2]
# 经纬度获取城市
baiduUrl = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=%s&output=json&coordtype=wgs84ll&location=%s,%s" % (ak, lat, lng)
req = requests.get(baiduUrl)
content = req.text
# 将content读取到的内容存入名为baiduAddr的字典中
baiduAddr = json.loads(content)
# 调用字典的相应内容,存到内存的变量中
province = baiduAddr["result"]["addressComponent"]["province"]
city = baiduAddr["result"]["addressComponent"]["city"]
district = baiduAddr["result"]["addressComponent"]["district"]
# 写入到x_y_city.txt
new_line = str(id)+","+str(lng) + "," + str(lat) + "," + province + "," + city + "," + district
fw.write(new_line)
fw.write("\n")
print(id)
x_y.txt文档内容
1,102.408,36.4878
2,100.308,25.6834
3,102.717,25.0526
4,114.558,25.7906
5,115.865,28.6883
6,114.772,25.6671
7,115.865,28.6883
8,118.205,31.1083
9,114.772,25.6671
直接复制粘贴,保存成 x_y.txt 即可
来源:yuan2er