参考博客:https://blog.csdn.net/qq_35625681/article/details/118873871
格式一
输出字段:‘国家’, ‘省份’, ‘市’, ‘区县’, ‘街道’, ‘区域编码’, ‘区域中心点’, ‘行政区划分级别’, ‘城市编码’
import requests
import pandas as pd
import time
import os
# 高德接口介绍 https://lbs.amap.com/api/webservice/guide/api/district
key = 'XX' # 参考接口介绍获取key,以及以下参数意义
while True: # 创建循环,如果查询结果成功,跳出循环
keywords = input('请输入需查询的关键词,例如,中国,山东,济南,历下区:\n')
subdistrict = input('设置显示下级行政区级数,可输入数字:0、1、2、3:\n')
extensions = 'base'
url = f'http://restapi.amap.com/v3/config/district?key={key}&keywords={keywords}&subdistrict={subdistrict}&extensions={extensions}'
r = requests.get(url)
data = r.json()
建议结果列表 = data['count']
if 建议结果列表 == '0':
print('参数输入错误,请重新输入!返回值:', 建议结果列表)
else:
break
行政区数据列表 = [] # 创建空列表,用户存储查询的数据
s1 = data['districts'][0]['adcode'] # 区域编码
s2 = data['districts'][0]['name'] # 行政区名称
s3 = data['districts'][0]['center'] # 区域中心点
s4 = data['districts'][0]['level'] # 行政区划级别
s5 = data['districts'][0]['citycode'] # 城市编码
if s4 == 'country':
行政区数据列表.append([s2, '', '', '', '', s1, s3, s4, s5]) # 国家
if s4 == 'province':
行政区数据列表.append(['', s2, '', '', '', s1, s3, s4, s5]) # 省份
if s4 == 'city':
行政区数据列表.append(['', '', s2, '', '', s1, s3, s4, s5]) # 市
if s4 == 'district':
行政区数据列表.append(['', '', '', s2, '', s1, s3, s4, s5]) # 区县
if s4 == 'street':
行政区数据列表.append(['', '', '', '', s2, s1, s3, s4, s5]) # 街道
一级行政区数据 = data['districts'][0]['districts']
一级行政区个数 = len(一级行政区数据)
for i in range(0, 一级行政区个数):
s1 = 一级行政区数据[i]['adcode']
s2 = 一级行政区数据[i]['name']
s3 = 一级行政区数据[i]['center']
s4 = 一级行政区数据[i]['level']
s5 = 一级行政区数据[i]['citycode']
if s4 == 'country':
行政区数据列表.append([s2, '', '', '', '', s1, s3, s4, s5]) # 国家
if s4 == 'province':
行政区数据列表.append(['', s2, '', '', '', s1, s3, s4, s5]) # 省份
if s4 == 'city':
行政区数据列表.append(['', '', s2, '', '', s1, s3, s4, s5]) # 市
if s4 == 'district':
行政区数据列表.append(['', '', '', s2, '', s1, s3, s4, s5]) # 区县
if s4 == 'street':
行政区数据列表.append(['', '', '', '', s2, s1, s3, s4, s5]) # 街道
二级行政区数据 = 一级行政区数据[i]['districts']
二级行政区个数 = len(二级行政区数据)
for x in range(0, 二级行政区个数):
s1 = 二级行政区数据[x]['adcode']
s2 = 二级行政区数据[x]['name']
s3 = 二级行政区数据[x]['center']
s4 = 二级行政区数据[x]['level']
s5 = 二级行政区数据[x]['citycode']
if s4 == 'country':
行政区数据列表.append([s2, '', '', '', '', s1, s3, s4, s5]) # 国家
if s4 == 'province':
行政区数据列表.append(['', s2, '', '', '', s1, s3, s4, s5]) # 省份
if s4 == 'city':
行政区数据列表.append(['', '', s2, '', '', s1, s3, s4, s5]) # 市
if s4 == 'district':
行政区数据列表.append(['', '', '', s2, '', s1, s3, s4, s5]) # 区县
if s4 == 'street':
行政区数据列表.append(['', '', '', '', s2, s1, s3, s4, s5]) # 街道
三级行政区数据 = 二级行政区数据[x]['districts']
三级行政区个数 = len(三级行政区数据)
for y in range(0, 三级行政区个数):
s1 = 三级行政区数据[y]['adcode']
s2 = 三级行政区数据[y]['name']
s3 = 三级行政区数据[y]['center']
s4 = 三级行政区数据[y]['level']
s5 = 三级行政区数据[y]['citycode']
if s4 == 'country':
行政区数据列表.append([s2, '', '', '', '', s1, s3, s4, s5]) # 国家
if s4 == 'province':
行政区数据列表.append(['', s2, '', '', '', s1, s3, s4, s5]) # 省份
if s4 == 'city':
行政区数据列表.append(['', '', s2, '', '', s1, s3, s4, s5]) # 市
if s4 == 'district':
行政区数据列表.append(['', '', '', s2, '', s1, s3, s4, s5]) # 区县
if s4 == 'street':
行政区数据列表.append(['', '', '', '', s2, s1, s3, s4, s5]) # 街道
df = pd.DataFrame(行政区数据列表, columns=['国家', '省份', '市', '区县', '街道', '区域编码', '区域中心点', '行政区划分级别', '城市编码'])
print(df)
路径 = '行政区域查询-' + str(time.strftime("%Y%m%d%H%M%S", time.localtime())) + '.xlsx'
print('请输入自定义文件保存位置,不输入则保存在默认位置,示例:C:\\Users\\lenovo\\Desktop\\')
address = ''
address_input = input('请输入:')
if len(address_input)==0:
address = 路径
else:
address = address_input + 路径
df.to_excel(address)
#显示最终保存路径
last_address = ''
if len(address_input) ==0:
last_address = os.path.abspath('.')+ '\\'+ address
else :
last_address = address
print('查询完成,结果输出:' + last_address)
格式二
输出字段:‘区域’, ‘区域编码’, ‘区域中心点’, ‘行政区划分级别’, ‘城市编码’
import requests
import pandas as pd
import time
import os
# 高德接口介绍 https://lbs.amap.com/api/webservice/guide/api/district
key = 'XX' # 参考接口介绍获取key,以及以下参数意义
while True: # 创建循环,如果查询结果成功,跳出循环
keywords = input('请输入需查询的关键词,例如,中国,浙江,杭州,余杭:\n')
subdistrict = input('设置显示下级行政区级数,可输入数字:0、1、2、3:\n')
extensions = 'base'
url = f'http://restapi.amap.com/v3/config/district?key={key}&keywords={keywords}&subdistrict={subdistrict}&extensions={extensions}'
r = requests.get(url)
data = r.json()
建议结果列表 = data['count']
if 建议结果列表 == '0':
print('参数输入错误,请重新输入!返回值:', 建议结果列表)
else:
break
行政区数据列表 = [] # 创建空列表,用户存储查询的数据
s1 = data['districts'][0]['adcode'] # 区域编码
s2 = data['districts'][0]['name'] # 行政区名称
s3 = data['districts'][0]['center'] # 区域中心点
s4 = data['districts'][0]['level'] # 行政区划级别
s5 = data['districts'][0]['citycode'] # 城市编码
行政区数据列表.append([s2, s1, s3, s4, s5])
一级行政区数据 = data['districts'][0]['districts']
一级行政区个数 = len(一级行政区数据)
for i in range(0, 一级行政区个数):
s1 = 一级行政区数据[i]['adcode']
s2 = 一级行政区数据[i]['name']
s3 = 一级行政区数据[i]['center']
s4 = 一级行政区数据[i]['level']
s5 = 一级行政区数据[i]['citycode']
行政区数据列表.append([s2, s1, s3, s4, s5])
二级行政区数据 = 一级行政区数据[i]['districts']
二级行政区个数 = len(二级行政区数据)
for x in range(0, 二级行政区个数):
s1 = 二级行政区数据[x]['adcode']
s2 = 二级行政区数据[x]['name']
s3 = 二级行政区数据[x]['center']
s4 = 二级行政区数据[x]['level']
s5 = 二级行政区数据[x]['citycode']
行政区数据列表.append([s2, s1, s3, s4, s5])
三级行政区数据 = 二级行政区数据[x]['districts']
三级行政区个数 = len(三级行政区数据)
for y in range(0, 三级行政区个数):
s1 = 三级行政区数据[y]['adcode']
s2 = 三级行政区数据[y]['name']
s3 = 三级行政区数据[y]['center']
s4 = 三级行政区数据[y]['level']
s5 = 三级行政区数据[y]['citycode']
行政区数据列表.append([s2, s1, s3, s4, s5])
df = pd.DataFrame(行政区数据列表, columns=['区域', '区域编码', '区域中心点', '行政区划分级别', '城市编码'])
print(df)
路径 = '行政区域查询-' + str(time.strftime("%Y%m%d%H%M%S", time.localtime())) + '.xlsx'
print('请输入自定义文件保存位置,不输入则保存在默认位置,示例:C:\\Users\\lenovo\\Desktop\\')
address = ''
address_input = input('请输入:')
if len(address_input)==0:
address = 路径
else:
address = address_input + 路径
df.to_excel(address)
#显示最终保存路径
last_address = ''
if len(address_input) ==0:
last_address = os.path.abspath('.')+ '\\'+ address
else :
last_address = address
print('查询完成,结果输出:' + last_address)