在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及驱动的具体安装,就需要问度娘啦!