因为两年不发贴子了!
这里从csdn上找了好多方法,阿西吧!就很nice,最近老师要搞一件大事情,航空数据的实时爬取和可视化,好家伙,爬虫的框架就是老一套,不过反扒机制确实可以说道说道,这个等我活过来一定给大家分享,现在说正题,好了,废话到此为止,上干货!
import json
import csv
import re
#初始化js数据存储列表
new_list = []
#更改json文件
with open("2021-01-02-flight.json", "r", encoding="utf8") as f:
new_data = f.read()
data_list = re.split('},', new_data)
#用于分割json文件中不合规范的多json数据
# 分割后记得补充完整{
}
for i in data_list:
add = i + '}'
new_list.append(add)
fs = open('2021-01-02-flight.csv', 'w',newline="",encoding='utf-8')
csv_write = csv.writer(fs)
#对于airflight的json文件数据处理
name=['airAge', 'airCName', 'airCtry', 'airIATA', 'aircraftNumber', 'airname', 'atype', 'atypename', 'dstTinezone', 'fdst', 'fdstAptCcity', 'fdstAptCity', 'fdstAptCname', 'fdstAptICAO', 'fdstAptLat', 'fdstAptLon', 'fdstAptName', 'fnum', 'fnum3', 'forg', 'forgAptCcity', 'forgAptCity', 'forgAptCname', 'forgAptICAO', 'forgAptLat', 'forgAptLon', 'forgAptName', 'ftype', 'icaoId', 'id', 'imageId', 'imageUrl', 'orgTinezone', 'scheduledArrtime', 'scheduledDeptime', 'actualDeptime', 'actualArrtime']
csv_write.writerow(name)
for i in range(len(new_list)):
if (i==len(new_list)-1):
break
else:
example_data = json.loads(new_list[i])
#这里有必要说一下,json.loads用于处理者中字符串数据
#json.load适用于打开字符串转化为字典,划重点(标准的json文件,不然你就得要用readline去读喽!有一丢丢小麻烦!)
write_data=[]
for j in name:
try:
example_data[j]#如果目标json数据里面没有该索引下的数据,用‘#’填充
except KeyError:
#print('没有元素信息')
write_data.append('#')
else:
if(example_data[j] is None):
write_data.append('#')
#print(example_data[j])
else:
write_data.append(example_data[j])
print(write_data)
csv_write.writerow(write_data)
#将每条处理后的js数据逐行写入
项目部分展示【可视化大屏】:
这个项目我会跟下去,如果这个我能仅靠自己做完,一定会给大家在Github上开源的,欢迎大家一起学习,一起进步