获取中国疫情数据并下载到本地

#  
# made by 杨庆华
import urllib.request,urllib.response
import json,csv,time

# 构建请求对象
def handle_request(url):
	headers = {
		'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
	}
	request = urllib.request.Request(url=url,headers=headers);
	return  request;
#拿到的数据进行清洗操作,转化为目标类型和字段
def handle_data(response):
	# jsonData 转化为str类型字符串
	jsonData = response.read().decode();
	# 转化为dict字典类型
	jsonObj = json.loads(jsonData)
	#不难发现通过对字典的访问,jsonObj['data']["asymptomaticProvince"]["confirm"],即可找到关于各个省份的列表
	results = jsonObj['data']["asymptomaticProvince"]["confirm"];
	#我们需要三个参数,对所获取的字段结果进行存储
	#proName代表各省份名、proIncrease代表各个省份新增人口数量、proConfirm代表各省份确诊人数
	proName = list()
	proIncrease = list();
	proConfirm = list();
	length = len(results);
	finalResult = []
	for i in range(length):
		proName.append(results[i]['province']);
		proIncrease.append(results[i]['increase'])
		proConfirm.append(results[i]['confirm'])
		#('广东', 8, 155) 把各个省份对应的数据合并为一个元组,方便下面写入Excel表
		t = (proName[i],proIncrease[i],proConfirm[i])
		#把每一个数据追加到列表里。
		finalResult.append(t)
	# print(finalResult)
	#为防止文件名重复导致报错,可以通过线程时间来解决命名冲突问题
	localtime = time.thread_time()
	filename = "中国疫情"+str(localtime)+".csv"
	with open(filename,'w+',newline=" ") as file:
		writer = csv.writer(file);
		writer.writerow(finalResult)

def main():
#此数据接口来源是腾讯接口,通过爬虫即可进行爬取数据
	url = "https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=asymptomaticProvince"
	request = handle_request(url)
	response = urllib.request.urlopen(request)
# 	解码为字符串 response.read().decode()
	handle_data(response)
if __name__ == "__main__":
	main();

最终效果如下图所示:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值