最新疫情数据报告已到达你的邮箱!
来源:数据管道(id:adc9556)
作者:宝器&fyq
2020年“地狱”难度的开局,属实一下子还没反应过来事情就发生了。截止到1月31日,新型冠状病毒肺炎累计确诊的人数已是“非典”的两倍之多,广大被“禁足”的网友们在这个春节里时刻心系着病毒的传播范围,短短数日,却蔓延迅速,全国染红。
一边是不断增长的确诊人数,而另一边是各种刷新三观的新闻爆出,让大家的心情跟坐过山车一样。
你可能已经看过各种“真相”:
疾控中心早已知道“人传人”,但却刻意隐...
国家院士早发表论文“人传人”,而你却浑然不....
双黄连对新型冠性....抑制
武汉某会钱“用不出去”
非典专家认为SARS Cov是非自然方式产生(美帝主义的阴谋)
此外,封城越久,寄情于网络越深,然而疫情消息满天飞,更有些不实言论,看多了徒增焦虑。且这届中老年组实在太难带了。
为避免他们过度恐慌或掉以轻心,同时小试下修炼已久的Python降龙十八掌,基于这两方面考虑想到一个体面又不失优雅的办法:
拿上Python花2小时写了采集、分析、并定点推送官方数据的代码,每天定时推送官方数据和亲友身边城市的疫情实时数据分布图,让大家理性关注、科学防范,做好疫情的自我防护。
先来个效果图
这个idea拆解为三个部分:
1、数据获取
2、数据处理
3、数据推送
数据获取:
目前新浪、腾讯以及人民日报&丁香园联手等单位都推出了疫情地图,有人民日报在,那必须最权威了。锁定主要从该网站取数据后,通过网页工具可发现用get请求便可取到数据了。好消息是有的同志预见了类似我这样群众跃跃欲试的热情,遂公开了API接口。
请求接口:/nCoV/api/area
请求方式:GET
返回数据如下:
这里也贴上最初无API情况下的尝试:
数据处理:
包括数据清洗和图表制作两大部分。
数据清洗:读取到的数据类型为由dict组成的list数据。由于要详细分析省内各地市情况所以将各省的cities内的数据读取出进行分析,可以在这里将各省确诊案例或疑似案例排名前5的城市及详情列出。
图表制作:可采用Pyecharts和matplotlib两种方式生成图表。
用pyecharts画同心圆饼图:
(限于篇幅,这里已湖北、广东省为例图)
用matplotlib画趋势图或地图:
数据推送
本工具采用SMTP邮箱服务器进行信息推动。SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
本案例的发送邮件模块源码如下:
踩坑提醒!
这款API大概有以下3种使用方法:
1. /nCoV/api/area?latest=1&province=湖北省返回湖北省疫情最新数据
2. /nCoV/api/area?latest=0&province=湖北省返回湖北省疫情的时间序列数据
3. /nCoV/api/area?latest=1返回中国全部城市及世界其他国家疫情最新数据
建议尽量采用第2种,latest=0读时序数据的方式。不要问为啥,因为我也很绝望,用latest=1偶尔读不到数据,不信看下面这个31日早上调用结果的截图,差点还以为复活了。毕竟数据是很严肃的事,容不得半点虚。
总结:
疫情信息流爆炸,看了徒增焦虑,技术服务生活,有需求的地方就有idea。写了个爬虫定期推送官方数据给亲友们,如有需求可告知邮箱地址及希望收到推送时间 。