最近被新型冠狀病毒搞的人心惶惶,很多城市被病毒感染,今天小編給大家分享使用Python製作新型冠狀病毒實時疫情圖,感興趣的朋友跟隨小編一起看看吧
最近一週每天早上起來第一件事,就是打開新聞軟件看疫情相關的新聞。瞭解下自己和親友所在城市的確診人數,但純數字還是缺乏一個直觀的概念。那我們來做一個吧。
至於數據,從各大網站的實時疫情頁面就可以拿到。以某網站爲例,用requests拿到html後,發現並沒有數據。不要慌,那證明是個javascript渲染的頁面,即使是javascript也是需要從後臺取數據的。打開Chrome開發者工具,點開network,刷新頁面,點擊各個請求,肯定有一個是取json的
注意這裏的返回數據是包含在一個js變量的,用正則處理下就好,然後用python自帶的json.loads方法就可以轉爲dict了
result = requests.get(
'https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181')
json_str = re.search("\(+([^)]*)\)+", result.text).group(1)
html = f"{json_str}"
table = json.loads(f"{html}")
數據格式很簡單,省數據和下屬城市的數據
{ 'city': [ { 'conNum': '4',
'cureNum': '0',
'deathNum': '0',
'name': '烏魯木齊',
'susNum': '0'},
{ 'conNum': '1',
'cureNum': '0',
'deathNum': '0',
'name': '伊犁州',
'susNum': '0'}],
'cureNum': '0',
'deathNum': '0',
'name': '新疆',
'susNum': '0',
'value': '5'}
英語好的同學可以直接猜到cureNum是治癒數,deathNum是死亡人數。value應該是確診數,其它字段可以根據原網站表格確定
推薦我們的Python學習扣qun:774711191 ,看看前輩們是如何學習的!從基礎的python腳本到web開發、爬蟲、django、數據挖掘等【PDF,實戰源碼】,零基礎到項目實戰的資料都有整理。送給每一位python的小夥伴!每天都有大牛定時講解Python技術,分享一些學習的方法和需要注意的小細節,點擊加入我們的 python學習者聚集地
最直觀的圖表當然是地圖了。國內大廠出的echarts自然會對國內地圖有最好的支持。用pip安裝pyecharts, 以及兩個數據包echarts-china-provinces-pypkg
echarts-china-cities-pypkg 即可
遍歷下json數據,把省名和確診數存在data數據裏傳給map對象就好
for province in table['data']['list']:
pp.pprint(province)
data.append((province['name'], province['value']))
for city in province['city']:
pp.pprint(city)
map_p = Map()
map_p.set_global_opts(title_opts=opts.TitleOpts(title="實時疫情圖"), visualmap_opts=opts.VisualMapOpts(max_=100))
map_p.add("確診", data, maptype="china")
map_p.render("ncov.html") # 生成html文件
代碼很簡單,注意max是決定渲染顏色的。效果圖如下
達到100確診的省份一目瞭然。感興趣的同學還可以製作市級別或者世界地圖。
最後祝願早日都變爲藍色吧。武漢加油,中國加油!
總結
以上所述是小編給大家介紹的使用Python製作新型冠狀病毒實時疫情圖