python监控疫情
2019年新冠状病毒入侵武汉,给中国人民带来巨大的灾难,面对灾难,每一个中国人很关心疫情的发展情况,下面根据python写了一个实时监控疫情的代码,定时给微信发疫情的最新信息,接口分两个模块,分别为:获取疫情实时信息和将获取的信息发送给微信好友
(一)下面是获取疫情实时信息的代码
import requestsas r
import datetime
import time
def yiqing_date():
url ="https://service-f9fjwngp-1252021671.bj.apigw.tencentcs.com/release/pneumonia"
content = r.get(url)# 请求访问的接口
try:
json_content = content.json()['data']# 解析json
update_timestamp = json_content['statistics']['modifyTime']# 获取更新时间的时间戳
date = datetime.datetime.fromtimestamp(update_timestamp /1000)# 将时间戳转化为时间格式
dateArray = date.strptime("%Y-%m-%d %H:%M:%S")# 确定时间格式,将时间格式转为为字符串格式time
total_comfired = json_content['statistics']['confirmedCount']# 获取接口中确诊病例数据
total_suspected = json_content['statistics']['suspectedCount']# 获取接口中疑是病例数据
total_cured = json_content['statistics']['curedCount']# 获取接口中治愈病例数据
total_date = json_content['statistics']['deadCount']# 获取接口中死亡病例数据
response_str ="""
今日疫情汇报
全国确诊病例累计:%s例
全国疑似病例累计:%s例
全国死亡病例累计:%s例
全国治愈出院病例累计:%s例
更新时间:%s
""" % (total_comfired, total_suspected, total_cured, total_date, dateArray)# 将信息组合或字符串,将以这种格式发送
print(response_str)# 返回该字符串
except:
return '有异常,请查看'
(二)下面是将获取的信息发送给微信好友的代码
import itchat
from apscheduler.schedulers.blockingimport BlockingScheduler
from yiqing_spiderimport yiqing_date
def send_news():
myFirend = itchat.search_friends(name=u"卢华")# 在微信好友列表中搜索呢称为"卢华"的用户
message = yiqing_date()# 获取疫情实时情况信息发送给该用户名
# print(message)
name = myFirend[0]["UserName"]# 获取昵称为"卢华"用户的微信用户名
itchat.send(message,toUserName=name)#将疫情实时情况信息发送给该用户
if __name__ =='__main__':
itchat.auto_login(hotReload=True)#登陆微信,登陆时它会将提示的二维码,hotReload参数表示保持微信登陆
scheduler = BlockingScheduler()#实例化调度器
scheduler.add_job(send_news, 'interval', seconds=3600)#添加调度任务,并将调度模式设置时间格式,每一个小时发送一次
scheduler.start()# 调度器工作开始
(二).在python中我们需要下载的模块分别为:itchat,apscheduler,requests 通过命令pip install xxx 模块名就可以了
itchat:微信的第三方库
apscheduler:设定定时任务的第三方库
requests :接口测试第三方库
(三)代码分析
通过requests库请求疫情实时数据接口,获取接口数据,对接口数据进行json解析,获取更新时间并转换时间格式,获取我们所想获得的数据,对数据进行字符串拼接,并返回该字符串,目前只获取了全国确诊病例、疑似病例、死亡病例、治愈病例和更新时间这几个字段,当然接口中还有很多其他的信息同样可以很简便的获取,如较昨日所增加的病例,如某个地区的详细疫情情况等都可以很方便的获取,在这就留给同学们去扩展自己想要关注的疫情内容了,然后通过itchat实现微信登录,然后通过apscheduler实现任务的调度,该任务就是send_news()方法,最后只需要运行py_wechat.py这个文件,就可以轻松的在微信中接受消息啦,比如小编想每隔一小时就给”卢华”通知一次疫情的实时情况,并且这条消息会每个小时都发送一次,而且每次发送的都是最新的消息。