李相霏 韓珂
摘? 要: 在新冠肺炎疫情背景下,通過數(shù)據(jù)爬蟲技術(shù)獲取開源的疫情數(shù)據(jù),經(jīng)數(shù)據(jù)處理后形成數(shù)據(jù)集,利用可視化技術(shù)進(jìn)行數(shù)據(jù)可視化與數(shù)據(jù)分析。介紹了數(shù)據(jù)爬取與處理方法,利用Python語言的Flask框架等可視化技術(shù)完成疫情數(shù)據(jù)可視化,從多角度、多方面展示與分析疫情數(shù)據(jù)。幫助民眾充分了解全國各地的疫情情況、疫情發(fā)展趨勢以及疫苗接種情況。
關(guān)鍵詞: 數(shù)據(jù)爬蟲; 新冠疫情; 數(shù)據(jù)可視化; Flask框架
中圖分類號:TP311.5? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A? ? ?文章編號:1006-8228(2021)12-60-04
Abstract: In the context of COVID-19 epidemic, open source epidemic data were obtained through data crawler technology, and data sets were formed after data processing, and visualization technology was used for data visualization and data analysis. Data crawling and processing methods were introduced, and visualization technologies such as Python Flask framework were used to complete the visualization of epidemic data, and the epidemic data were displayed and analyzed from multiple perspectives and aspects, which helps people fully understand the situation of the epidemic, the trend of the epidemic and the status of vaccination throughout the country.
Key words: data crawler; COVID-19; data visualization; Flask framework
0 引言
在2020年初爆發(fā)的新型冠狀病毒,是一種傳染力極強(qiáng)的病毒?;颊咴诟腥玖诵滦凸跔畈《竞?,即使在潛伏期也很容易傳染其他人,該病毒會導(dǎo)致人呼吸困難,嚴(yán)重的可能會導(dǎo)致死亡。時至今日,疫情仍未完全褪去,新冠疫情仍是全世界人民最關(guān)注的話題之一,特別是有些國家仍處于爆發(fā)期。因此,疫情的實(shí)時數(shù)據(jù)以及相關(guān)新聞報導(dǎo)受到了極大的關(guān)注。
本系統(tǒng)利用數(shù)據(jù)爬蟲技術(shù),完成疫情數(shù)據(jù)以及疫苗接種數(shù)據(jù)的爬取,經(jīng)數(shù)據(jù)處理后形成數(shù)據(jù)集。利用數(shù)據(jù)可視化技術(shù),對數(shù)據(jù)集進(jìn)行可視化,實(shí)現(xiàn)疫情情況與疫苗接種情況的實(shí)時更新。幫助民眾充分了解最新疫情數(shù)據(jù)、近期疫情發(fā)展趨勢以及疫苗接種情況。
Flask框架是一個輕量級的、便捷的、Python所提供的Web框架,它更加的靈活、輕便、安全且容易上手,是目前主流的服務(wù)器框架,非常適合全隊的分工協(xié)作式開發(fā),對一個小型團(tuán)隊而言,大大提升了開發(fā)的效率[1]。利用Flask框架,實(shí)現(xiàn)前后端的數(shù)據(jù)交互,其對應(yīng)的前端JinJa2的模板引擎,也極大地方便了前端的數(shù)據(jù)調(diào)用。
1 現(xiàn)有技術(shù)研究現(xiàn)狀
目前,比較成熟的疫情數(shù)據(jù)可視化平臺有:丁香園疫情數(shù)據(jù)可視化平臺、騰訊疫情數(shù)據(jù)可視化平臺、百度疫情數(shù)據(jù)可視化平臺。這三家數(shù)據(jù)可視化平臺內(nèi)容分析,如圖1所示。
現(xiàn)有技術(shù)的實(shí)現(xiàn)均是通過對大量的疫情數(shù)據(jù)進(jìn)行爬取、數(shù)據(jù)處理,利用可視化技術(shù)進(jìn)行數(shù)據(jù)的可視化。本系統(tǒng)集疫情數(shù)據(jù)與疫苗數(shù)據(jù)于一個頁面中,讓用戶可以更直觀的觀察到疫情信息、疫苗信息。并且,本系統(tǒng)在疫情分布圖上做出創(chuàng)新,在全國疫情分布圖中點(diǎn)擊各省份,直接進(jìn)入各省份疫情分布圖,省略其中間步驟。用戶可以由全國疫情分布圖直接進(jìn)入各省份疫情分布圖,了解各省份的疫情分布。
2 系統(tǒng)架構(gòu)與實(shí)現(xiàn)流程
2.1 系統(tǒng)總體架構(gòu)
本系統(tǒng)包括疫情數(shù)據(jù)爬取與處理、數(shù)據(jù)可視化與分析兩個部分。根據(jù)數(shù)據(jù)需求發(fā)起相應(yīng)的Request請求,接收服務(wù)器端的響應(yīng)[2]。對返回的數(shù)據(jù)進(jìn)行數(shù)據(jù)處理形成數(shù)據(jù)集。最終,對數(shù)據(jù)集進(jìn)行可視化。
本系統(tǒng)采用四層架構(gòu)設(shè)計,具體分為資源層、執(zhí)行層、功能層和表現(xiàn)層。系統(tǒng)總體架構(gòu)圖,如圖2所示。
2.2 系統(tǒng)運(yùn)行流程
本系統(tǒng)流程分為以下幾步:①獲取目標(biāo)網(wǎng)頁的URL以及Head信息;②發(fā)送Request請求獲取響應(yīng)數(shù)據(jù);③數(shù)據(jù)處理;④數(shù)據(jù)可視化與數(shù)據(jù)分析。系統(tǒng)運(yùn)行流程圖,如圖3所示。
3 數(shù)據(jù)爬取與處理
本系統(tǒng)利用數(shù)據(jù)爬蟲技術(shù)獲取實(shí)時疫情數(shù)據(jù)與疫苗接種情況。數(shù)據(jù)來源于丁香園疫情數(shù)據(jù)可視化平臺和騰訊疫情數(shù)據(jù)可視化平臺。
對爬取的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗,然后轉(zhuǎn)化為Json的數(shù)據(jù)字典,形成的Json數(shù)據(jù)字典重要關(guān)鍵鍵說明,如表1所示。
對爬取的數(shù)據(jù)經(jīng)過數(shù)據(jù)清洗、Json數(shù)據(jù)字典的轉(zhuǎn)化、數(shù)據(jù)提取等操作過后,劃分為圖4的兩個數(shù)據(jù)集:疫情數(shù)據(jù)集、疫苗數(shù)據(jù)集。
利用SQLite數(shù)據(jù)庫,完成數(shù)據(jù)存儲,生成DB文件。形成單文件操作,利于后期系統(tǒng)的維護(hù)[3]。
4 數(shù)據(jù)可視化與數(shù)據(jù)分析
本系統(tǒng)基于疫情數(shù)據(jù)集以及疫苗數(shù)據(jù)集,利用Python語言的Flask框架、ECharts等技術(shù)完成數(shù)據(jù)的可視化。后端完成數(shù)據(jù)的提取與封裝,利用Ajax技術(shù)完成前后端的數(shù)據(jù)交互[4]。ECharts技術(shù)與Jinja2模板引擎等技術(shù)實(shí)現(xiàn)數(shù)據(jù)可視化[5]。本文采用2021年6月之前的數(shù)據(jù)。
4.1 全國疫情實(shí)時追蹤
全國疫情實(shí)時追蹤數(shù)據(jù)可視化,后端利用SQL語言完成數(shù)據(jù)的提取,并對提取的數(shù)據(jù)進(jìn)行封裝[6]??倲?shù)據(jù)渲染效果如圖5所示,分別以不同顏色對全國疫情數(shù)據(jù)進(jìn)行了數(shù)據(jù)可視化,全國疫情數(shù)據(jù)清晰明了,用戶可以直觀的了解到最新的疫情數(shù)據(jù)。
4.2 全國疫情分布圖
全國疫情分布圖,渲染效果如圖6所示,通過顏色的不同來反映該省份現(xiàn)有確診的數(shù)值,并且鼠標(biāo)懸停時,會顯示該省份的現(xiàn)有確診人數(shù)與境外輸入人數(shù)[7]。用戶可以直觀看出全國疫情以及各省份疫情分布。現(xiàn)有確診較為嚴(yán)重的兩個城市為廣東與臺灣,主要確診病例來源為境外輸入病例。應(yīng)加強(qiáng)對境外人員入境的疫情管控工作,防止境外輸入病例的二次傳播。
4.3 各省份疫情分布圖
各省份疫情分布圖,渲染效果如圖7所示。在全國疫情分布圖上創(chuàng)建點(diǎn)擊事件,點(diǎn)擊省份之后進(jìn)入各省份疫情分布圖,顯示出該省各個市的疫情分布。用戶可以直觀的看出各省份中各個市的疫情分布,圖7中以廣東省為例,目前廣東省疫情較為嚴(yán)重的地區(qū)為廣州市。
4.4 累計疫情趨勢圖
累計疫情趨勢圖,渲染效果如圖8所示,其中以近兩個月日期為橫軸,以累計疫情數(shù)據(jù)為縱軸。以不同顏色的折線來區(qū)分累計確診、累計治愈、累計死亡、現(xiàn)有疑似數(shù)據(jù)。在鼠標(biāo)懸停時會有這一天的全國累計疫情的數(shù)據(jù)顯示[8]。由圖8可以看出,從2021年5月15日開始,截止2021年6月21日累計確診人數(shù)有明顯的上升趨勢,與臺灣疫情的爆發(fā)以及境外輸入病例的增多有密切關(guān)系。由此可以看出,疫情仍未完全褪去,并且仍有爆發(fā)的可能性。
4.5 新增疫情趨勢圖
新增疫情趨勢圖,渲染效果如圖9所示。近兩個月日期為橫軸,以新增疫情數(shù)據(jù)為縱軸。不同顏色的折線來區(qū)分新增確診、新增治愈、新增死亡、新增疑似數(shù)據(jù)。鼠標(biāo)懸停時顯示這一天的全國新增疫情數(shù)據(jù)[9]。用戶由該圖可以看出,從2021年4月23日開始,截止至2021年6月21日,新增確診人數(shù)呈現(xiàn)先增加后減少的趨勢。說明在我國先進(jìn)的醫(yī)療技術(shù)下,加以民眾的配合,新一輪疫情的爆發(fā)在短時間內(nèi)就得到了控制。
4.6 全國疫苗數(shù)據(jù)實(shí)時追蹤
全國疫苗數(shù)據(jù)實(shí)時追蹤,渲染效果如圖10所示。用戶可以看到最新的疫苗接種情況。數(shù)據(jù)包含累計接種劑次,較昨日新增接種劑次、還有每百人接種人數(shù)。截止至2021年6月21日,最新累計接種劑次高達(dá)1049744000例,我國疫苗接種乘勢而上,實(shí)現(xiàn)新突破。
4.7 疫苗累計接種趨勢圖
疫苗累計接種趨勢圖的可視化,渲染效果如圖11所示。其中,以近兩個月的日期為橫軸,以疫苗累計接種劑次數(shù)據(jù)為縱軸。在鼠標(biāo)懸停時會有疫苗累計接種劑次數(shù)據(jù)顯示。由該圖可見從2021年4月23日起,截止2021年6月21日,我國疫苗接種劑次呈明顯上升趨勢,疫苗接種進(jìn)度推進(jìn)速度正在加快。
5 結(jié)束語
截至到2021年6月,疫情仍未完全褪去,民眾最為關(guān)心的是疫苗接種情況。本系統(tǒng)基于疫情數(shù)據(jù)顯示的基礎(chǔ)上,增加疫苗數(shù)據(jù)顯示功能。利用數(shù)據(jù)爬蟲技術(shù)完成數(shù)據(jù)的獲取與下載,經(jīng)數(shù)據(jù)處理后形成數(shù)據(jù)集,數(shù)據(jù)可視化階段利用Python語言的Flask框架、ECharts可視化等可視化技術(shù),對疫情數(shù)據(jù)以及疫苗數(shù)據(jù)進(jìn)行數(shù)據(jù)可視化。經(jīng)過對現(xiàn)有技術(shù)的分析,并在可視化內(nèi)容上做出創(chuàng)新。集可視化內(nèi)容于一個頁面中,疫情數(shù)據(jù)與疫苗數(shù)據(jù)一目了然,用戶可以從多方面,多角度,全方位直觀的觀察到疫情數(shù)據(jù)、疫情發(fā)展趨勢,以及疫苗接種情況。本系統(tǒng)的開發(fā)是用來幫助民眾充分了解全國各地的疫情情況、近期的疫情發(fā)展趨勢以及疫苗接種情況。
參考文獻(xiàn)(References):
[1] 周文帆.基于Flask的形式化驗(yàn)證系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].北京交通大學(xué),2020.
[2] 劉玉玲,鄭力新.新冠肺炎疫情數(shù)據(jù)的抓取及可視化研究[J].電子設(shè)計工程,2021.29(7):40-44
[3] 陳敬靜.SQLite數(shù)據(jù)庫研究與可視化[D].南京郵電大學(xué),2020.
[4] 先巡,袁軍.Ajax/Javascript在網(wǎng)頁中的特效應(yīng)用[J].黔南民族師范學(xué)院學(xué)報,2019.39(S1):100-103
[5] 鄭翔,王慧芳,嚴(yán)嫻崢,金麗娟,溫桂平,何奔騰.用于APP的缺陷文本自動分類與質(zhì)量保證方法[J].電力系統(tǒng)及其自動化學(xué)報,2020.32(7):131-136
[6] 冷四軍.基于Python Flask的運(yùn)維信息管理系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2021.5:87-88
[7] 彭順生.基于ECharts的肺炎疫情數(shù)據(jù)處理與可視化[J].計算機(jī)時代,2020.7:47-49,53
[8] 楊晨,蘇有慧,周軍.新冠肺炎疫情大數(shù)據(jù)可視化平臺設(shè)計與實(shí)現(xiàn)[J].計算機(jī)時代,2021.1:61-64
[9] 劉玉玲,鄭力新.新冠肺炎疫情數(shù)據(jù)的抓取及可視化研究[J].電子設(shè)計工程,2021.29(7):40-44