最新疫情数据报告已到达你的邮箱!

恋习Python

共 1504字,需浏览 4分钟

 ·

2020-02-03 23:22

来源:数据管道(id:adc9556)

作者:宝器&fyq


2020年“地狱”难度的开局,属实一下子还没反应过来事情就发生了。截止到1月31日,新型冠状病毒肺炎累计确诊的人数已是“非典”的两倍之多,广大被“禁足”的网友们在这个春节里时刻心系着病毒的传播范围,短短数日,却蔓延迅速,全国染红。


594da7324e63f395479f93c5a75a6324.webp


一边是不断增长的确诊人数,而另一边是各种刷新三观的新闻爆出,让大家的心情跟坐过山车一样。


eaffb759d1945bae724d6fed65b55441.webp


你可能已经看过各种“真相”:


疾控中心早已知道“人传人”,但却刻意隐...

国家院士早发表论文“人传人”,而你却浑然不....

双黄连对新型冠性....抑制

武汉某会钱“用不出去”

非典专家认为SARS Cov是非自然方式产生(美帝主义的阴谋)


4048c59c876081bdb008f42646a1f9f2.webp

此外,封城越久,寄情于网络越深,然而疫情消息满天飞,更有些不实言论,看多了徒增焦虑。且这届中老年组实在太难带了。


d0f5439953182092809ec427f3953243.webp


为避免他们过度恐慌或掉以轻心,同时小试下修炼已久的Python降龙十八掌,基于这两方面考虑想到一个体面又不失优雅的办法:


拿上Python花2小时写了采集、分析、并定点推送官方数据的代码,每天定时推送官方数据和亲友身边城市的疫情实时数据分布图,让大家理性关注、科学防范,做好疫情的自我防护。


先来个效果图


3bef19c977851161e0151e42f28845e0.webp


这个idea拆解为三个部分:

1、数据获取

2、数据处理

3、数据推送


数据获取:


目前新浪、腾讯以及人民日报&丁香园联手等单位都推出了疫情地图,有人民日报在,那必须最权威了。锁定主要从该网站取数据后,通过网页工具可发现用get请求便可取到数据了。好消息是有的同志预见了类似我这样群众跃跃欲试的热情,遂公开了API接口。


09667a772716d0f9755a02559844ebdc.webp


请求接口:/nCoV/api/area

请求方式:GET

返回数据如下:


797bb6ae3b8ad7732b2e8bc877e20ef2.webp


采用API接口的源码如下:


f8ba645da26b48e8beadb0e4a1cc3eac.webp


这里也贴上最初无API情况下的尝试:


ec130828ea69c093c4934b97cadab225.webp


数据处理:


包括数据清洗和图表制作两大部分。


数据清洗:读取到的数据类型为由dict组成的list数据。由于要详细分析省内各地市情况所以将各省的cities内的数据读取出进行分析,可以在这里将各省确诊案例或疑似案例排名前5的城市及详情列出。


9b840eb05900f0de11f2b85e0da035e3.webp


图表制作:可采用Pyecharts和matplotlib两种方式生成图表。


用pyecharts画同心圆饼图:


cd4fa78a138bffc93c09c2e50c29249d.webp


c27c9c3db126e203cf47b4da1f9df2a3.webp


a3e4cae7c82622760b89beb695342fad.webp

(限于篇幅,这里已湖北、广东省为例图)


用matplotlib画趋势图或地图:


c11260200e8ce2f7f75c5b809ad968b9.webpfc7c0848902b307155dea599308aa2e6.webp


数据推送


本工具采用SMTP邮箱服务器进行信息推动。SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。


本案例的发送邮件模块源码如下:


42980bcef4d2e63a0f82f56bc5f970ba.webp


踩坑提醒!


这款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日早上调用结果的截图,差点还以为复活了。毕竟数据是很严肃的事,容不得半点虚。


884beb39c6f575d5952c2c9911e411cf.webp


总结:


疫情信息流爆炸,看了徒增焦虑,技术服务生活,有需求的地方就有idea。写了个爬虫定期推送官方数据给亲友们,如有需求可告知邮箱地址及希望收到推送时间 。

浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报