标签:aa arr 45 接口 page 爬取 json POI 高德
此次爬取需要引用包有
import sheet import time import json import requests
此处做的为函数,需要mian函数来调用,为了方便程序运行统一成功。
def read_poi(): #各下级行政区的代码,若是嫌逐个复制麻烦可以通过读取文件的方式实现,此处不进行讲解 # arr= ['120100','120101','120102','120103','120104','120105','120106','1201010','120111','120112','120113','120114','120115','120116','120117','120118','120119'] #API的URL,在这里进行了结构化处理 arr = sheet.read_excel() url1="https://restapi.amap.com/v3/place/text?key=807c3aaf8b58a288aa83b28d11c817e4&keywords=景区&types=风景名胜&city=" url2="&output=JSON&children=&offset=20&page=" url3="&extensions=all" #用于储存数据 x=[] #用于计数 num=0 #循环各下级行政区进行POI检索 for i in range(0,len(arr)): #当前行政区 city=arr[i] #因为官方对API检索进行了45页限制,所以只要检索到45页即可 for page in range(1,46): #若该下级行政区的POI数量达到了限制,则警告使用者,之后考虑进行POI类型切分 if page==45: print("警告!!POI检索可能受到限制!!") #构造URL thisUrl=url1+city+url2+str(page)+url3 #获取POI数据 data=requests.get(thisUrl) #转为JSON格式 s=data.json() #解析JSON aa = s["pois"] #若解析的JSON为空,即当前行政区的数据不够45页(即没有达到限制),返回 if len(aa)==0: break #对每条POI进行存储 for k in range(0,len(aa)): b={} b["name"]=aa[k]["name"] b["type"]=aa[k]["type"] b["address"]=aa[k].get("address") b["adname"]=aa[k]["adname"] b["location"]=aa[k]["location"] b["citycode"]=aa[k]["citycode"] b["adcode"]=aa[k]["adcode"] b["pname"]=aa[k]["pname"] b["cityname"]=aa[k]["cityname"] x.append(b) num+=1 print("爬取了 "+str(num)+" 条数据") print(city); time.sleep(0.5) #将数据结构化存储至规定目录的CSV文件中 result = json.dumps(x, sort_keys=True, indent=2) with open('./jingqu/datapoi.json','w',encoding='utf-8') as file: for i in result: file.write(i) print('数据已写入json文件...')
标签:aa,arr,45,接口,page,爬取,json,POI,高德 来源: https://www.cnblogs.com/weidewozi/p/14907897.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。