利用paddlepaddle爬取丁香园实时统计数据,并生成疫情地图!!
當(dāng)下,新型冠狀病毒感染的肺炎疫情無時(shí)無刻不牽動(dòng)著人們的心。面對(duì)來勢(shì)洶洶的疫情,除了奮戰(zhàn)在前線的醫(yī)護(hù)人員以及防疫建設(shè)工作者們,小媛們也想盡一份綿薄之力。
這不,今天為大家?guī)砹艘环莩唵蔚?#xff01;生成自己的疫情地圖的方法,各位想要?jiǎng)邮值男】蓯劭梢圆倬毱饋砝?#xff01;
01、爬取丁香園實(shí)時(shí)統(tǒng)計(jì)數(shù)據(jù)**
我們要爬取的是丁香園大佬的公開統(tǒng)計(jì)數(shù)據(jù),這才讓我們的疫情地圖生成有了可能。咳咳,數(shù)據(jù)才是王道。
import json import re import requests import datetimetoday = datetime.date.today().strftime('%Y%m%d') #20200315def crawl_dxy_data():"""爬取丁香園實(shí)時(shí)統(tǒng)計(jì)數(shù)據(jù),保存到data目錄下,以當(dāng)前日期作為文件名,存JSON文件"""response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia') #request.get()用于請(qǐng)求目標(biāo)網(wǎng)站print(response.status_code) # 打印狀態(tài)碼try:url_text = response.content.decode() #更推薦使用response.content.deocde()的方式獲取響應(yīng)的html頁面#print(url_text)url_content = re.search(r'window.getAreaStat = (.*?)}]}catch', #re.search():掃描字符串以查找正則表達(dá)式模式產(chǎn)生匹配項(xiàng)的第一個(gè)位置 ,然后返回相應(yīng)的match對(duì)象。url_text, re.S) #在字符串a(chǎn)中,包含換行符\n,在這種情況下:如果不使用re.S參數(shù),則只在每一行內(nèi)進(jìn)行匹配,如果一行沒有,就換下一行重新開始;#而使用re.S參數(shù)以后,正則表達(dá)式會(huì)將這個(gè)字符串作為一個(gè)整體,在整體中進(jìn)行匹配。texts = url_content.group() #獲取匹配正則表達(dá)式的整體結(jié)果content = texts.replace('window.getAreaStat = ', '').replace('}catch', '') #去除多余的字符json_data = json.loads(content) with open('data/' + today + '.json', 'w', encoding='UTF-8') as f:json.dump(json_data, f, ensure_ascii=False)except:print('<Response [%s]>' % response.status_code)if __name__ == '__main__':crawl_dxy_data()當(dāng) print(response.status_code) 輸出200即為成功狀態(tài)。
從以上代碼我們可以看到,我們會(huì)生成一個(gè) data/’ + today + '.json 的文件,這樣我們就輕松爬取到今日的疫情數(shù)據(jù)啦:data/20200331.json
02、安裝可視化工具庫
03、繪制疫情餅狀圖
import json import datetime from pyecharts.charts import Pie from pyecharts import options as opts# 讀原始數(shù)據(jù)文件 today = datetime.date.today().strftime('%Y%m%d') #20200331 datafile = 'data/'+ today + '.json' with open(datafile, 'r', encoding='UTF-8') as file:json_array = json.loads(file.read())# 分析全國實(shí)時(shí)確診數(shù)據(jù) china_data = [] for province in json_array:china_data.append((province['provinceShortName'], province['confirmedCount'])) china_data = sorted(china_data, key=lambda x: x[1], reverse=True) #reverse=True,表示降序,反之升序print(china_data)labels = [data[0] for data in china_data] counts = [data[1] for data in china_data]c = (Pie().add("累計(jì)確診", [list(z) for z in zip(labels, counts)]).set_global_opts(title_opts=opts.TitleOpts(title="3月31日疫情分布圖"),legend_opts=opts.LegendOpts(orient="vertical")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")).render("3月31日疫情分布圖.html") )然后該代碼會(huì)為我們生成一個(gè)文件:3月31日疫情分布圖.html
一個(gè)簡單的今日疫情餅狀圖就生成啦
以上的代碼可以根據(jù)自己的喜好進(jìn)行相應(yīng)更改哦
04、繪制疫情地圖
怎么樣
今天的內(nèi)容
是不是
超令人激動(dòng)
快來領(lǐng)取你自己的疫情地圖吧!
總結(jié)
以上是生活随笔為你收集整理的利用paddlepaddle爬取丁香园实时统计数据,并生成疫情地图!!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洋葱模型php,PHPIZE的作用 -
- 下一篇: python第五次作业——潘芊睿