import requests
import pandas as pd
import os
import json
# key
amp_api_key = "从高德处获取key并输入到此框内"
# 请求地址前缀
req_url_pref = "https://restapi.amap.com/v3/place/text?"
# 分页信息
page_size = 20 # 每页20个数据
page_num = 1 # 代表第一页
# 请求参数
rep_params = {
"keywords": "建材市场",
"city": "上海",
"offset": page_size,
"page": page_num,
"extentions": "base",
"key": amp_api_key,
"children": 1,
"citylimit": "true"
}
def get_poi_from_amap(): #分页获取高德api已经显示的信息
result = pd.DataFrame()
i = 1
while True:
print("i:", i)
page_num = i
rep_params["page"] = page_num
response = requests.get(req_url_pref, params=rep_params)
data = response.json()
count = data["count"]
print("count", count)
if count == "0":
break
# 将每次分页结果数据插入指定的目标文件中
for j in range(0, len(data["pois"])):
name = data["pois"][j]["name"]
address = data["pois"][j]["address"]
location = data["pois"][j]["location"]
lon = data["pois"][j]["location"].split(",")[0]
lat = data["pois"][j]["location"].split(",")[1]
busi_data = [
{
"name": name,
"address": address,
"location": location,
"lon": lon,
"lat": lat,
}
]
df = pd.DataFrame(busi_data) #DataFrame生成二位excel表
result = result.append(df)
print(result)
output_path = os.getcwd() + os.sep + "poi_construct_market.xlsx"#文件的储存路径
result.to_excel(output_path)
i = i + 1
if __name__ == "__main__":
get_poi_from_amap()
注意要预装requests,pandas,json,os模块才能正常与运行,输出结果为excel表,在高德api中申请开发者账号,创键新的软件>web开发,获得开发者的key,并填入上方的代码中,输出结果中会显示名称,地质和经纬度等消息。
改进方向:1.可以在字典中添加更多的信息
2.可以尝试不使用地图的api来获取地图的所有信息
3.可以用pandas库中的df来以csv的形式进行保存,代码更加简介明了。