如何用Python,制作疫情可视化大屏?

2020-10-09 15:49:48 浏览数 (1)

在3月初,小F写了一篇可视化教程的推文,其中提到了几个疫情的可视化大屏,视觉效果十分酷炫。

这期就来实战一波,并且将项目部署上线。

技术栈js css html echarts flask mysql,效果大致如下~

这里要说明一下,项目的来源是「B站」。

如果你也想自己部署上线这么一个疫情可视化大屏,那么可以访问下面的小程序,就可以看到具体的教程。

这里又不得不吹一下小破站,干货真的好多。

不过项目中还是有一些问题存在,比如讲解不清楚又或者代码有问题。

第一个便是爬虫代码的更新

项目的部分数据是来源于「腾讯新闻的疫情实时追踪」,其中视频中的爬取代码已经失效,需要新增一个数据接口。

代码语言:javascript复制
https://view.inews.qq.com/g2/getOnsInfo?name=disease_other
https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5

项目最新代码已经上传「GitHub」,阅读原文即可访问。

还有热搜的数据也是有所变化,标签发生了改变,数据来源于百度疫情热搜。

代码语言:javascript复制
//*[@id="ptab-0"]/div/div[2]/section/div
//*[@id="ptab-0"]/div/div[2]/section/a/div/span[2]

第二个就是在本地远程连接服务器上的数据库

一开始按照视频里的方法,一直连接不上,折腾了小F好久。

查阅资料后才知道需要修改mysql的user表,设置远程连接权限。

还有就是成功连接上,插入数据,数据库的表格没反应。

最后将表格的类型从InnoBDB改为MYISAM就可以了,具体什么原因,就不太清楚了...

读取数据库数据时出现了Decimal类型的数据,通过Decimal.to_eng_string()解决。

代码语言:javascript复制
data[0].to_eng_string(), data[1], data[2].to_eng_string(), data[3].to_eng_string()

第三个就是生产模式部署,视频中使用的是gunicorn,而我使用的则是uwsgi

只需将uwsgi.ini文件放在项目目录下,并在虚拟环境中运行即可。

这个在小F之前的几篇推文有提到过,可以翻翻看。

其中爬虫代码可以上传到服务器上,通过crontab定时运行,这样数据就能一直更新下去。

代码语言:javascript复制
30 * * * * /root/app/test/env/bin/python3 /root/app/test/spider.py up_his >> /root/app/test/log_his 2>&1 &
3 */2 * * * /root/app/test/env/bin/python3 /root/app/test/spider.py up_hot >> /root/app/test/log_hot 2>&1 &
*/5 * * * * /root/app/test/env/bin/python3 /root/app/test/spider.py up_det >> /root/app/test/log_det 2>&1 &

记得加上虚拟环境的路径,这样程序才能运行成功。

还有一个需要加路径的地方就是selenium,视频里是C盘路径,我一个Linux服务器,肯定是不行的。

代码语言:javascript复制
browser = webdriver.Chrome(options=chrome_options, executable_path='/usr/local/bin/chromedriver')

selenium、Chrome及驱动的具体安装,就需要问度娘啦!

0 人点赞