数据爬取网站:https://2019ncov.chinacdc.cn/2019-nCoV/,在此表示感谢! 鉴于经常有人私信如何爬取最近的疫情数据,之前帖子里面的代码不可用了,因此更新了一下代码,有需要的人自取。
完整代码如下:
import requests
import json
import time
import csv
from urllib.request import urlopen, quote
def save_data(data):
with open('./'+datejson+'.csv', encoding='UTF-8', mode='a+',newline='') as f:
f_csv = csv.writer(f)
f_csv.writerow(data)
f.close()
print("#########"
" 版权所有:殷宗敏 & 数据接口来源-https://2019ncov.chinacdc.cn/2019-nCoV/ & 在此表示感谢!"
"##########")
firstDate = 1579190400
intervalDate = 86400
z=0
now = time.time()
while firstDate+intervalDate*z<now:
now_time = time.strftime("%Y%m%d %H:%M:%S", time.localtime(firstDate+intervalDate*z))
datejson=now_time.split( )[0]
print("正在下载"+datejson)
header = ['省份', '新增疑似', '累计疑似', '新增确诊', '累计确诊' ,'新增死亡','累计死亡']
with open('./'+datejson+'.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()
url = 'https://2019ncov.chinacdc.cn/JKZX/yq_'+datejson+'.json'
html = requests.get(url).text
unicodestr=json.loads(html) #将string转化为dict
dat = unicodestr["features"] #获取data中的内容,取出的内容为str
for i in dat:
j = i["properties"]
a = j['省份']
b = j['新增疑似']
c = j['累计疑似']
d = j['新增确诊']
e = j['累计确诊']
f = j['新增死亡']
g = j['累计死亡']
tap = (a,b,c,d,e,f,g)
save_data(tap)
z=z+1
print("##########数据下载结束#########")
下载结果如下:
|