利用python爬取新型冠状肺炎疫情发生以来的实时数据,并进行可视化展示。

内容:利用python爬取新型冠状肺炎疫情发生以来的实时数据,并进行可视化展示。

要求:数据源可自己选择,可视化的内容尽量丰富,除了简单的直方图、曲线图外,还可以有新增确诊/疑似病例图、地理分布图、传播动态图等,具体功能自行设计。以Matplotlib为主,可利用Pyecharts等为补充。暂不要求页面部署及用户交互。

在这次实验中,我有了上次实验中学习python的经验,在了解这次实验是爬虫算法后,我就在b站看学习爬虫的视频,了解了爬取代码与正则表达式等内容,但在之后开始自己写爬虫后却发现并不像自己想象的那么简单,而且对于如何可视化也没有头绪,于是只好在网上查找新冠疫情爬取的代码,在查找代码的过程中我发现了一个很好的实时疫情网站,里面的数据规律明显很容易爬取,于是我借鉴代码写出了爬虫程序,并将数据放入到excel表中,但在可视化的过程中任然不知道怎么做,之后我学习了一点可视化的内容,但写出代码运行仍然有问题,考虑到时间问题之后放弃可视化。

在这里插入图片描述

四、实验总结

这次实验给了我很多启示,在刚开始看到实验内容时,我认为爬虫很难学习,但发现自己在网上看视频后发现爬虫不像想象的那么难学,代码并不是很复杂,关键是找到正则表达式,之后自己在写的过程中更是发现不同网站源代码的爬取难易度大不相同,在网上学习别人的代码也学习很多,对python的理解也多了很多。

import requests,os
import re
import xlwt#写入excel库
import time#格式化时间
import json#字符串转字典
file_path = 'E:/新冠疫情/'
if not os.path.exists(file_path):
    os.makedirs(file_path)
    print('======数据文件夹不存在=======')
    print('======数据文件夹创建成功======')
    print('======创建目录为%s======'%(file_path))
else:
    print('======数据保存在目录:%s======' % (file_path))
#检查并创建数据目录
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'}
response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia?from=timeline&isappinstalled=0', headers=headers, timeout=3)
# 请求页面
response = str(response.content, 'utf-8')
# 中文重新编码
areas_type_dic_raw = re.findall('try { window.getAreaStat = (.*?)}catch\(e\)',response)
areas_type_dic = json.loads(areas_type_dic_raw[0])#将json对象转变为python对象
count = 2#数据写入行数记录
newworkbook = xlwt.Workbook()
worksheet = newworkbook.add_sheet('all_data')
# 打开工作簿,创建工作表
worksheet.write(1, 2, '省份名称')
worksheet.write(1, 3, '省份简称或城市名称')
worksheet.write(1, 4, '确诊人数')
worksheet.write(1, 5, '疑似人数')
worksheet.write(1, 6, '治愈人数')
worksheet.write(1, 7, '死亡人数')
worksheet.write(1, 8, '地区ID编码')
#写入数据列标签

for province_data in areas_type_dic:
    provincename = province_data['provinceName']
    provinceshortName = province_data['provinceShortName']
    p_confirmedcount = province_data['confirmedCount']
    p_suspectedcount = province_data['suspectedCount']
    p_curedcount = province_data['curedCount']
    p_deadcount = province_data['deadCount']
    p_locationid = province_data['locationId']
    #用循环获取省级以及该省以下城市的数据
    worksheet.write(count, 2, provincename)
    worksheet.write(count, 3, provinceshortName)
    worksheet.write(count, 4, p_confirmedcount)
    worksheet.write(count, 5, p_suspectedcount)
    worksheet.write(count, 6, p_curedcount)
    worksheet.write(count, 7, p_deadcount)
    worksheet.write(count, 8, p_locationid)
                    #在工作表里写入省级数据

    count += 1
                    #此处为写入行数累加,province部分循环

    for citiy_data in province_data['cities']:
        cityname = citiy_data['cityName']
        c_confirmedcount = citiy_data['confirmedCount']
        c_suspectedcount = citiy_data['suspectedCount']
        c_curedcount = citiy_data['curedCount']
        c_deadcount = citiy_data['deadCount']
        c_locationid = citiy_data['locationId']
                            #该部分获取某个省下某城市的数据

        worksheet.write(count, 3, cityname)
        worksheet.write(count, 4, c_confirmedcount)
        worksheet.write(count, 5, c_suspectedcount)
        worksheet.write(count, 6, c_curedcount)
        worksheet.write(count, 7, c_deadcount)
        worksheet.write(count, 8, c_locationid)
                            #该部分在工作表里写入某城市的数据

        count += 1
                            #此处为写入行数累加,cities部分循环
current_time = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
newworkbook.save('E:\新冠疫情\疫情实时爬取-%s.xls' % (current_time))
print('======数据爬取成功======')

爬取结果:
https://download.csdn.net/download/qq_45808700/19598095?spm=1001.2014.3001.5503

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pistachiout

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值