疫情数据统计
武汉疫情牵动着全国人名的心,每天都关注着疫情的发展,有时候去关注做了很多的无用功,于是想着偷偷懒,只要疫情发生变化,微信将会受到消息
文章目录
疫情数据统计
1.抓取腾讯疫情地图数据
1.1 F12观察网页特点
1.1.1 腾讯的疫情地图url=https://news.qq.com/zt2020/page/feiyan.htm
1.1.2 F12查看google网页请求以及应答
1.1.3 使用Search筛选数据包
1.1.4 分析请求url以及response
1.1.5使用[json数据解析网址](https://www.json.cn/)
1.2 模拟浏览器请求
2.提取关注的信息
2.1 遇到的问题
2.2 提取全国、湖南省等疫情信息
3.使用server酱接收微信消息
3.1 推荐一款好用的[微信提醒工具](http://sc.ftqq.com/3.version)
3.2 使用server酱服务效果图
4.阿里云服务器部署py脚本
4.1 阿里云服务器运行
5.源码分享
1.抓取腾讯疫情地图数据
1.1 F12观察网页特点
1.1.1 腾讯的疫情地图url=https://news.qq.com/zt2020/page/feiyan.htm
1.1.2 F12查看google网页请求以及应答
1.1.3 使用Search筛选数据包
这样能快速的找到需要的数据请求的信息,能够快速定位数据
1.1.4 分析请求url以及response
写代码时因为惯性思维,看到这个url以为这个将是post请求,最后请求的数据并不是完全的json格式,数据提取的时候纠结了返回的数据很久。。。
URL=https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5
1.1.5使用json数据解析网址
1.2 模拟浏览器请求
2.提取关注的信息
2.1 遇到的问题
(1)使用post方法获得的数据一直带着如下图字符串,在这儿纠结了很久。。。晕死
结果是自己请求方法搞错了。
(2)应答的数据虽然是json格式,但并没有按照常规出牌,尽然是一维的,在这耽误了很久,之前没注意,一直试着常规的方法访问字典,再仔细看看下面数据中的引号(“”),真的是柳暗花明又一村
(3)访问了data的值之后数据是str类型,不过文本内容任然是字典的格式,于是使用函数将文本转化成字典格式
2.2 提取全国、湖南省等疫情信息
由于返回的数据是已经排序的数据,因此需要查找需要的数据
for i in range(len(dict_data["areaTree"][0]["children"])):
if dict_data["areaTree"][0]["children"][i]["name"]=="湖南":
for j in range(len(dict_data["areaTree"][0]["children"][i]["children"])):
if dict_data["areaTree"][0]["children"][i]["children"][j]["name"]=="衡阳":
index1=i
index2=j
break
3.使用server酱接收微信消息
3.1 推荐一款好用的微信提醒工具
3.2 使用server酱服务效果图
4.阿里云服务器部署py脚本
4.1 阿里云服务器运行
自己以前都没有接触过Linux,为了补充知识面,买了阿里云的学生特价服务器,想借此练手,于是百度了很多关于py脚本如何在Ubuntu服务器后台运行,Ubuntu初始就装载了python2.7和python3.5版本,这就方便了我们的程序运行。Linux学习进行中~~请多指教
(1)使用Xshell上传py文件
(2)Linux指令后台运行脚本
5.源码分享
import requests
import json
import time
def post_data():
url='https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
chrome_info={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0'}
re1=requests.get(url,headers=chrome_info)
data1=re1.json()
#print(data1)
data=json.loads(data1["data"])
#print(data)
print("爬取信息")
return data
if __name__=="__main__":
#调用腾讯疫情地图接口API
signal=0
while True:
dict_data=post_data()
for i in range(len(dict_data["areaTree"][0]["children"])):
if dict_data["areaTree"][0]["children"][i]["name"]=="湖南":
for j in range(len(dict_data["areaTree"][0]["children"][i]["children"])):
if dict_data["areaTree"][0]["children"][i]["children"][j]["name"]=="衡阳":
index1=i
index2=j
break
if signal!=dict_data["chinaTotal"]["confirm"]:
url = "https://sc.ftqq.com/SCU62999Td6e569532603a70f16b3fc9955667e085d907316d5ed1.send"
form_data={
'text':dict_data["lastUpdateTime"]+'疫情信息',
'desp':["全国数据\n确诊数%s 待确诊%s 死亡人数%s 治愈人数%s"%(dict_data["chinaTotal"]["confirm"],dict_data["chinaTotal"]["suspect"],dict_data["chinaTotal"]["dead"],dict_data["chinaTotal"]["heal"])+'-------------------------------------------------'+
"湖南省汇总数据\n确诊数%s 待确诊%s 死亡人数%s 治愈人数%s" % (dict_data["areaTree"][0]["children"][index1]["total"]["confirm"],
dict_data["areaTree"][0]["children"][index1]["total"]["suspect"],
dict_data["areaTree"][0]["children"][index1]["total"]["dead"],
dict_data["areaTree"][0]["children"][index1]["total"]["heal"])+'-------------------------------------------------'+
"衡阳总计\n确诊人数%s 待确诊人数%s 死亡人数%s 治愈人数%s"%(dict_data["areaTree"][0]["children"][index1]["children"][j]["total"]["confirm"],dict_data["areaTree"][0]["children"][index1]["children"][j]["total"]["suspect"],dict_data["areaTree"][0]["children"][index1]["children"][j]["total"]["dead"],dict_data["areaTree"][0]["children"][index1]["children"][j]["total"]["heal"])+'-------------------------------------------------'+
"衡阳今日数据\n新增确诊人数%s 新增待确诊人数%s 新增死亡人数%s 新增治愈人数%s" % (
dict_data["areaTree"][0]["children"][index1]["children"][index2]["today"]["confirm"],
dict_data["areaTree"][0]["children"][index1]["children"][index2]["today"]["suspect"],
dict_data["areaTree"][0]["children"][index1]["children"][index2]["today"]["dead"],
dict_data["areaTree"][0]["children"][index1]["children"][index2]["today"]["heal"])
]
}
send = requests.post(url,data=form_data)
print("发送消息成功")
signal = dict_data["chinaTotal"]["confirm"]
time.sleep(60)