【项⽬】全国疫情实时追踪——python爬⾍+flask+echarts实
现(超详细)
⾸先我们来看看最终成果
因为前⼀段时间河南等地⼜受疫情影响,因放假在家没有事情做,我⾃⼰就写了⼀个这样的⼩项⽬打发时间,最近也是没有啥项⽬做就把这个项⽬得原理分享给⼤家
记得点赞关注哦
⼀. 爬⾍爬取数据
①⾸先我们⽤python去写⼀个爬⾍脚本去获取⼀些疫情数据(我⽤的是腾讯)
⾸先我们先抓包,到数据所在的请求链接。
我们可以看到这个url就是我们获取数据的链接,我们对这个链接请求然后抓取数据并保存到csv⽂件中。我们可以看⼀下代码。
import  requests
import json
import csv
url='view.inews.qq/g2/getOnsInfo?name=disease_h5&callback=jQuery351007009437517570039_1629632572593&_=1629632572594'
head={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62 }
response = (url,headers=head).text
print(response)
dict1 =json.loads(response[42:132060])#这个切⽚位置是会变化的,需要我们去分析每天变化的位置,然后再去切⽚
d = json.loads(dict1['data'])#json是转化抓取来的数据格式,json.load是将字符串转化为字典的格式
print(d)
all_dict={}
all_dict['统计时间']=d["lastUpdateTime"]
chinaTotal = d['chinaTotal']
all_dict['累计确诊病例'] = chinaTotal['confirm']
all_dict['现有确诊'] = chinaTotal['nowConfirm']
all_dict['治愈病例'] = chinaTotal['heal']
all_dict['死亡病例'] = chinaTotal['dead']
all_dict['本⼟昨⽇新增'] = chinaTotal['suspect']
all_dict['输⼊'] = chinaTotal['importedCase']
all_dict['⽆症状感染者'] = chinaTotal['noInfect']
print(all_dict)
print(chinaTotal)
with open('yqin.csv','w+',newline='')as f:
f1= csv.writer(f)
list1=[]
f1.writerow(all_dict)
for i in all_dict:
list1.append(all_dict[i])
f1.writerow(list1)
用html设计一个疫情网页代码
# print(chinaTotal)
area = d['areaTree'][0]
# for i in area:
#    print(area[i])
children = area['children']
with open('yq1.csv','w+',newline = '')as f:
list1= ['省份','现有病例','昨⽇新增','累计病例','死亡⼈数','治愈⼈数']
f1 = csv.writer(f)
f1.writerow(list1)
for i , index,in enumerate(children):
cc = children[i]
dd = []
dd.append(cc['name'])
dd.append(cc['total']['nowConfirm'])
dd.append(cc['today']['confirm'])
dd.append(cc['total']['confirm'])
dd.append(cc['total']['dead'])
dd.append(cc['total']['heal'])
f1.writerow(dd)
print(dd)
这个数据就是我们但时候需要传到前端的数据,我们每天更新⼀下就可以!
⼆.
数据的爬取我们写完了,我们开始先构建html得界⾯,我在给⼤家推荐⼀个前端软件
这个官⽹下载就可以,免费使⽤,写html是⽐较⽅便的。
⼀共做了九个模块,⼤家可以看本⽂章得第⼀个图,看看是不是九个模块,这些就是涉及到前端的基
础知识了,如果有前端不熟的⼩伙伴可以去先把基础学好,然后在来仔细看这个,也可以我讨论哦。
标题有了,接下来我们要⽤css去把这些模块分在不同的位置。
⼤家需要创建⼀个css⽂件哦,然后在html导⼊。
接下来我直接在代码⾥⾯给⼤家讲解了。
话不多说,上代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>疫情监控</title>
<script src='../static/js/jq.js'></script>
<script type='text/javascript' src='../static/js/echarts.min1.js'></script>
<script type='text/javascript' src='../static/js/china.js'></script>
<link href="../static/css/main.css" rel="stylesheet"/>
</head>
<body >
<div id="title">全国疫情实时追踪</div>
<div id="time"  >时间</div>
<div id="zuo1">我是标题左⼀</div>
<div id="zuo2">我是标题左⼆</div>
<div id="ls">lishi</div>
<div id="z1" >
<div class="num" ><h1>123</h1></div>
<div class="num" ><h1>123</h1></div>
<div class="num" ><h1>123</h1></div>
<div class="num" ><h1>123</h1></div>
<div class="txt" ><h2>累计确诊</h2></div>
<div class="txt" ><h2>累计治愈</h2></div>
<div class="txt" ><h2>累计死亡</h2></div>
<div class="txt" ><h2>输⼊</h2></div>
</div>
<div id="z2">我是标题中⼆</div>
<div id="y1">我是标题右⼀</div>
<div id="y2">我是标题右⼆</div>
<iframe id="ls" scrolling="no" frameborder="0" allowtransparency="true" src="tenapi/lishi/"></iframe>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。