scala实验4
交通态势的爬取
正常接口情况下爬取
引用包
import sheet import time import json import requests
函数定义
def read_poi():
读取各下级行政区的代码
arr = sheet.du_sql()
循环各下级行政区进行POI检索
url1="https://restapi.amap.com/v3/traffic/status/circle?key=ecbbca20adc1bcb1e1416c23a8929921&location=" url2="&radius=1500" #用于储存数据 x=[] #用于计数 num=0 #循环各下级行政区进行POI检索 for i in range(0,len(arr)): #当前行政区 city=arr[i]['location'] #因为官方对API检索进行了45页限制,所以只要检索到45页即可 for page in range(1,46): print(city) #若该下级行政区的POI数量达到了限制,则警告使用者,之后考虑进行POI类型切分 #构造URL thisUrl=url1+city+url2 #获取POI数据 data=requests.get(thisUrl) #转为JSON格式 s=data.json() #解析JSON centerurl = "https://restapi.amap.com/v3/config/district?keywords=" centerurl2 = "&subdistrict=2&key=ecbbca20adc1bcb1e1416c23a8929921" if(s.get("trafficinfo") == None): datacenter = requests.get(centerurl+arr[i]['adname']+centerurl2) ss=datacenter.json() saa = ss["districts"] center = saa[0]["center"] thisUrl = url1+center+url2 data = requests.get(thisUrl) s = data.json() if(s.get("trafficinfo") == None): datacenter = requests.get(centerurl+arr[i]['adname']+centerurl2) ss=datacenter.json() saa = ss["districts"] center = saa[0]["center"] thisUrl = url1+center+url2 data = requests.get(thisUrl) s = data.json() if(s.get("trafficinfo") == None): datacenter = requests.get(centerurl+arr[i]['adname']+centerurl2) ss=datacenter.json() saa = ss["districts"] center = saa[0]["center"] thisUrl = url1+center+url2 data = requests.get(thisUrl) s = data.json() aa = s["trafficinfo"] else: aa = s["trafficinfo"] else: aa = s["trafficinfo"] else: aa = s["trafficinfo"] #若解析的JSON为空,即当前行政区的数据不够45页(即没有达到限制),返回 if len(aa)==0: break #对每条POI进行存储 b={} b["description"] = aa["description"] b["expedite"] = aa['evaluation']['expedite'] b["congested"] = aa['evaluation']['congested'] b["blocked"] = aa['evaluation']['blocked'] b["unknown"] = aa['evaluation']['unknown'] b["status"] = aa['evaluation']['status'] b["description"] = aa['evaluation']['description'] x.append(b) time.sleep(0.5)
存储
result = json.dumps(x, sort_keys=True, indent=2) with open('./jingqu/datapoijiaotong.json','w',encoding='utf-8') as file: for i in result: file.write(i) print('数据已写入json文件...')

浙公网安备 33010602011771号