使用Python获取最新疫情数据,制作可视化动态地图,实时展示各地情况

x33g5p2x  于2022-05-05 转载在 Python  
字(2.2k)|赞(0)|评价(0)|浏览(791)

序言

疫情降临转眼已经第三年了,时间过得真快,愿疫情早点结束,世界不再多灾多难。

最近疫情稍微好转一些了,所以咱们获取一下最新的疫情数据,做个可视化地图看看。

效果展示

获取到的数据咱们保存到表格

可视化地图

颜色是跟网上的一样,可以跟随鼠标移动变色,展示数据的。

还可以实现这种更好看的


以及柱状图

还等什么,我们直接开始把~

准备工作

涉及知识点

  1. 爬虫基本流程
  2. requests 发送请求
  3. re 正则表达式
  4. json 结构化数据解析
  5. pyecharts 可视化

开发环境

  1. python 3.8: 解释器
  2. pycharm: 代码编辑器

实现流程

  1. 发送请求
  2. 获取数据
  3. 解析数据
  4. 保存数据
  5. 可视化分析

前四步的话,基本大部分*虫都是如此。

具体操作,我就不详细写了,这个视频第56集有详细讲,前面几集也有基本思路,可以说很全面。

代码总是学完就忘记?100个爬虫实战项目!让你沉迷学习丨学以致用丨下一个Python大神就是你!

每次都写流程,有人看还好,没人看的话,或者看了又没人点赞收藏,就渐渐的没动力了。

索性直接用视频讲解放在那里,嘿嘿~

不过不要慌,代码里我都写了注释的。

代码展示

又到了紧张刺激的环节了

1、获取数据部分

  1. import requests # 发送请求 第三方模块 额外安装吧
  2. import re # 内置模块 无需安装
  3. import json
  4. import csv
  5. # 伪装 字典
  6. headers = {
  7. # 浏览器基本信息
  8. 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'
  9. }
  10. with open('data.csv', mode='a', encoding='utf-8', newline='') as f:
  11. csv_writer = csv.writer(f)
  12. csv_writer.writerow(['area', 'curConfirm', 'curConfirmRelative', 'confirmed', 'crued', 'died'])
  13. url = 'https://voice.这里加上我国网民最常用的那个网站地址/act/newpneumonia/newpneumonia/?from=osari_aladin_banner'
  14. # 1. 发送请求
  15. # x=1,y=2
  16. response = requests.get(url=url, headers=headers)
  17. # 2. 获取数据
  18. # <Response [200]>: 访问成功
  19. html_data = response.text
  20. # print(html_data)
  21. # 3. 解析数据 正则
  22. # a. 告诉他 我们要怎么查找 "component":\[(.*?)\]
  23. # b. 我们在哪里查找
  24. # 正则会把所有能匹配到的数据都会给到我们
  25. # (.*?)
  26. # .*匹配任意字符 0次或者多次
  27. # ? 非贪婪匹配符
  28. json_str = re.findall('"component":\[(.*)\],', html_data)[0]
  29. # 类型 转化一下 字典
  30. json_dict = json.loads(json_str)
  31. caseList = json_dict['caseList']
  32. for case in caseList:
  33. area = case['area'] # 省份
  34. curConfirm = case['curConfirm'] # 确诊人数
  35. curConfirmRelative = case['curConfirmRelative'] # 当前确诊
  36. confirmed = case['confirmed'] # 累计确诊
  37. crued = case['crued'] # 治愈人数
  38. died = case['died'] # 死亡人数
  39. print(area, curConfirm, curConfirmRelative, confirmed, crued, died)
  40. with open('data.csv', mode='a', encoding='utf-8', newline='') as f:
  41. csv_writer = csv.writer(f)
  42. csv_writer.writerow([area, curConfirm, curConfirmRelative, confirmed, crued, died])

2、可视化部分

  1. import pandas as pd
  2. from pyecharts.charts import Map
  3. from pyecharts import options as opts
  4. df = pd.read_csv('data.csv', encoding='utf-8')
  5. china_map = (
  6. Map()
  7. .add('现有确诊', [list(i) for i in zip(df['area'].values.tolist(), df['curConfirm'].values.tolist())], 'china')
  8. .set_global_opts(
  9. title_opts=opts.TitleOpts(title='各地区确诊人数'),
  10. visualmap_opts=opts.VisualMapOpts(max_=200, is_inverse=True)
  11. )
  12. )
  13. china_map.render('demo.html')

这里只有第一种可视化效果,其它的都是ipynb 格式的,我懒得打开了~

下方扫一下领取吧

相关文章