鑑於之前,實時獲取丁香醫生上的肺炎數據的工作,可以參照我的博客:肺炎數據下載,大家對於歷史數據獲取比較關心,的確如此,好在有網友先見之明,在數據公佈開始,就進行了歷史數據的爬取與存儲,從而對歷史數據的下載成爲可能,這裏特別感謝知乎用戶:李二蛋。
基於其提供的數據接口,從而實現肺炎歷史數據的下載。這裏將源代碼打包成exe工具,可直接使用。
工具下載地址:
鏈接:https://pan.baidu.com/s/1UN6NES4Y92zbqUMKtPT4ew
提取碼:o2c8
效果如下:
源代碼如下:
import requests,re
import json
import time
import csv
print("#########"
" 版權所有:殷宗敏 & 數據接口來源:知乎 李二蛋 & 在此表示感謝!"
"##########")
provinceNames = ['湖北省', '廣東省', '河南省', '浙江省', '湖南省', '安徽省', '江西省', '江蘇省', '重慶市', '山東省', '四川省', '黑龍江省', '北京市', '上海市', '福建省', '河北省', '陝西省', '廣西壯族自治區', '海南省', '雲南省', '貴州省', '山西省', '遼寧省', '天津市', '甘肅省', '吉林省', '內蒙古自治區', '新疆維吾爾自治區', '寧夏回族自治區', '青海省', ]
for pro in provinceNames:
url = 'https://lab.isaaclin.cn/nCoV/api/area?latest=0&province='+pro
html = requests.get(url).text
unicodestr=json.loads(html) #將string轉化爲dict
dat = unicodestr["results"]
header = ['時間', '城市', '確診人數', '疑似病例', '死亡人數', '治癒人數']
with open('./'+pro+'.csv', encoding='utf-8-sig', mode='w', newline='') as f:
# 編碼utf-8後加-sig可解決csv中文寫入亂碼問題
f_csv = csv.writer(f)
f_csv.writerow(header)
f.close()
def save_data(data):
with open('./'+pro+'.csv', encoding='UTF-8', mode='a+', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerow(data)
f.close()
for i in dat[:-10]:
tim = i.get('updateTime')
timeArray = time.localtime(tim/1000)
formatTime = time.strftime("%Y/%m/%d %H:%M", timeArray)
new_list = i.get('cities')
j = 0
while j < len(new_list):
data = (formatTime)
confirm = (new_list[j]['confirmedCount'])
city = (new_list[j]['cityName'])
suspect = (new_list[j]['suspectedCount'])
dead = (new_list[j]['deadCount'])
heal = (new_list[j]['curedCount'])
tap = (data, city, confirm, suspect, dead, heal)
save_data(tap)
j += 1
print(pro+"的數據下載成功!")
print("#########下載結束!(備註:香港、臺灣、澳門、西藏無市區數據)#########")
關注微信公衆號:python趣味愛好者,後臺回覆:肺炎數據,可以獲取該exe程序和源代碼文件。
二維碼如下: