嗨嗨,大家好~

今天真的是刚睡醒就知道RNG八人确诊,这年头出国打个比赛都这么不容易,希望早日康复~

唉,今天就教你们

如何用Python采集全球疫情数据,并做可视化分析

知识点:

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

开发环境:

  • python 3.8: 解释器

  • pycharm: 代码编辑器

  • requests 发送请求

  • pyecharts 绘制图表

  • pandas 读取数据

基本原理:

模拟成 浏览器/客户端 向 服务器 发送请求的过程

思路:

找到数据来源

  • 静态的数据: 你在右键点击查看网页源代码 能够找到的数据
  • 动态的数据: 你在右键点击查看网页源代码 找不到的数据

实现爬虫代码的流程:

  1. 发送请求 (通过 代码的方式访问上方的数据来源/访问网站)
  2. 获取数据
  3. 解析数据
  4. 保存数据

采集代码

import requests     # 发送请求
import csv          # 内置模块 不需要你安装的

mode=‘a’: 追加写入

encoding=‘utf-8’: 编码方式 / gbk

newline=‘’: 数据空行

f = open('疫情数据.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.writer(f)
csv_writer.writerow(['name', 'confirm', 'confirmAdd', 'dead', 'heal', 'nowConfirm'])

headers 伪装 公开数据

url = 'https://api.inews.qq.com/newsqa/v1/automation/modules/list?modules=FAutoCountryConfirmAdd,WomWorld,WomAboard'
  1. 发送请求
response = requests.post(url)

<Response [200]>: 200, 请求成功了

  1. 获取数据

.text: 直接获取文本内容

.json(): 字典 键值对的方式把数据取出来

.content: 获取二进制内容, 视频 / 音频 / 图片

json_data = response.json()
  1. 解析数据

结构非常的标准

结构化的数据 json数据 直接通过字典键值对的方式取值 [‘data’] [‘WomAboard’]

非结构化数据 网页源代码 css/xpath/re

python学习交流Q群:770699889 ###
WomAboard = json_data['data']['WomAboard']
# 0, 224
for i in range(0, 225):name = WomAboard[i]['name']confirm = WomAboard[i]['confirm']confirmAdd = WomAboard[i]['confirmAdd']dead = WomAboard[i]['dead']heal = WomAboard[i]['heal']nowConfirm = WomAboard[i]['nowConfirm']print(name, confirm, confirmAdd, dead, heal, nowConfirm)
  1. 保存数据
    csv_writer.writerow([name, confirm, confirmAdd, dead, heal, nowConfirm])
f.close()

可视化代码

import pandas as pd     # 做表格操作的模块
from pyecharts.charts import Map  # 绘图的模块
from pyecharts import options as opts
python学习交流Q群:770699889 ###
name_map = {'Singapore Rep.': '新加坡','Dominican Rep.': '多米尼加','Palestine': '巴勒斯坦','Bahamas': '巴哈马','Timor-Leste': '东帝汶','Afghanistan': '阿富汗','Guinea-Bissau': '几内亚比绍',"Côte d'Ivoire": '科特迪瓦','Siachen Glacier': '锡亚琴冰川',"Br. Indian Ocean Ter.": '英属印度洋领土','Angola': '安哥拉','Albania': '阿尔巴尼亚','United Arab Emirates': '阿联酋','Argentina': '阿根廷','Armenia': '亚美尼亚','French Southern and Antarctic Lands': '法属南半球和南极领地','Australia': '澳大利亚','Austria': '奥地利','Azerbaijan': '阿塞拜疆','Burundi': '布隆迪','Belgium': '比利时','Benin': '贝宁','Burkina Faso': '布基纳法索','Bangladesh': '孟加拉国','Bulgaria': '保加利亚','The Bahamas': '巴哈马','Bosnia and Herz.': '波斯尼亚和黑塞哥维那','Belarus': '白俄罗斯','Belize': '伯利兹','Bermuda': '百慕大','Bolivia': '玻利维亚','Brazil': '巴西','Brunei': '文莱','Bhutan': '不丹','Botswana': '博茨瓦纳','Central African Rep.': '中非共和国','Canada': '加拿大','Switzerland': '瑞士','Chile': '智利','China': '中国','Ivory Coast': '象牙海岸','Cameroon': '喀麦隆','Dem. Rep. Congo': '刚果(金)','Congo': '刚果(布)','Colombia': '哥伦比亚','Costa Rica': '哥斯达黎加','Cuba': '古巴','N. Cyprus': '北塞浦路斯','Cyprus': '塞浦路斯','Czech Rep.': '捷克','Germany': '德国','Djibouti': '吉布提','Denmark': '丹麦','Algeria': '阿尔及利亚','Ecuador': '厄瓜多尔','Egypt': '埃及','Eritrea': '厄立特里亚','Spain': '西班牙','Estonia': '爱沙尼亚','Ethiopia': '埃塞俄比亚','Finland': '芬兰','Fiji': '斐','Falkland Islands': '福克兰群岛','France': '法国','Gabon': '加蓬','United Kingdom': '英国','Georgia': '格鲁吉亚','Ghana': '加纳','Guinea': '几内亚','Gambia': '冈比亚','Guinea Bissau': '几内亚比绍','Eq. Guinea': '赤道几内亚','Greece': '希腊','Greenland': '格陵兰','Guatemala': '危地马拉','French Guiana': '法属圭亚那','Guyana': '圭亚那','Honduras': '洪都拉斯','Croatia': '克罗地亚','Haiti': '海地','Hungary': '匈牙利','Indonesia': '印度尼西亚','India': '印度','Ireland': '爱尔兰','Iran': '伊朗','Iraq': '伊拉克','Iceland': '冰岛','Israel': '以色列','Italy': '意大利','Jamaica': '牙买加','Jordan': '约旦','Japan': '日本','Kazakhstan': '哈萨克斯坦','Kenya': '肯尼亚','Kyrgyzstan': '吉尔吉斯斯坦','Cambodia': '柬埔寨','Korea': '韩国','Kosovo': '科索沃','Kuwait': '科威特','Lao PDR': '老挝','Lebanon': '黎巴嫩','Liberia': '利比里亚','Libya': '利比亚','Sri Lanka': '斯里兰卡','Lesotho': '莱索托','Lithuania': '立陶宛','Luxembourg': '卢森堡','Latvia': '拉脱维亚','Morocco': '摩洛哥','Moldova': '摩尔多瓦','Madagascar': '马达加斯加','Mexico': '墨西哥','Macedonia': '马其顿','Mali': '马里','Myanmar': '缅甸','Montenegro': '黑山','Mongolia': '蒙古','Mozambique': '莫桑比克','Mauritania': '毛里塔尼亚','Malawi': '马拉维','Malaysia': '马来西亚','Namibia': '纳米比亚','New Caledonia': '新喀里多尼亚','Niger': '尼日尔','Nigeria': '尼日利亚','Nicaragua': '尼加拉瓜','Netherlands': '荷兰','Norway': '挪威','Nepal': '尼泊尔','New Zealand': '新西兰','Oman': '阿曼','Pakistan': '巴基斯坦','Panama': '巴拿马','Peru': '秘鲁','Philippines': '菲律宾','Papua New Guinea': '巴布亚新几内亚','Poland': '波兰','Puerto Rico': '波多黎各','Dem. Rep. Korea': '朝鲜','Portugal': '葡萄牙','Paraguay': '巴拉圭','Qatar': '卡塔尔','Romania': '罗马尼亚','Russia': '俄罗斯','Rwanda': '卢旺达','W. Sahara': '西撒哈拉','Saudi Arabia': '沙特阿拉伯','Sudan': '苏丹','S. Sudan': '南苏丹','Senegal': '塞内加尔','Solomon Is.': '所罗门群岛','Sierra Leone': '塞拉利昂','El Salvador': '萨尔瓦多','Somaliland': '索马里兰','Somalia': '索马里','Serbia': '塞尔维亚','Suriname': '苏里南','Slovakia': '斯洛伐克','Slovenia': '斯洛文尼亚','Sweden': '瑞典','Swaziland': '斯威士兰','Syria': '叙利亚','Chad': '乍得','Togo': '多哥','Thailand': '泰国','Tajikistan': '塔吉克斯坦','Turkmenistan': '土库曼斯坦','East Timor': '东帝汶','Trinidad and Tobago': '特里尼达和多巴哥','Tunisia': '突尼斯','Turkey': '土耳其','Tanzania': '坦桑尼亚','Uganda': '乌干达','Ukraine': '乌克兰','Uruguay': '乌拉圭','United States': '美国','Uzbekistan': '乌兹别克斯坦','Venezuela': '委内瑞拉','Vietnam': '越南','Vanuatu': '瓦努阿图','West Bank': '西岸','Yemen': '也门','South Africa': '南非','Zambia': '赞比亚','Zimbabwe': '津巴布韦','Comoros': '科摩罗'
}
pieces = [{"min": 1000000},{"min": 100000, "max": 999999},{"min": 10000, "max": 99999},{"min": 1000, "max": 9999},{"min": 100, "max": 999},{"min": 0, "max": 99},
]df = pd.read_csv('疫情数据.csv')
# 转成列表
name = df['name']
confirm = df['confirm']
dead = df['dead']
world_map = (Map().add('累计确诊', [list(i) for i in zip(name, confirm)], 'world', name_map=name_map, is_map_symbol_show=False).add('死亡人数', [list(i) for i in zip(name, dead)], 'world', name_map=name_map, is_map_symbol_show=False).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title='世界疫情情况'),visualmap_opts=opts.VisualMapOpts(max_=1000000, is_piecewise=True, pieces=pieces))
)
world_map.render('1.html')


文章看不懂,我专门录了对应的视频讲解,本文只是大致展示,完整代码和视频教程点击本行字即可

好啦,今天的分享到这里就结束了 ~

如果需要视频学习的可以在b站搜索 :Python小圆

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦
觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

Python采集全球疫情数据并做可视化分析相关推荐

  1. Python实战——全球疫情数据采集, 并做可视化

    前言 大家早好.午好.晚好吖~ 知识点: 爬虫基本流程 requests 发送请求 re 正则表达式 json 结构化数据解析 开发环境: python 3.8: 解释器 pycharm: 代码编辑器 ...

  2. Python实战采集全球疫情数据

    嗨嗨,大家好~ 最近疫情反反复复,就一直没有消停过,之前小区被封,隔离了,上班都成问题 现在上班时间进写字楼,都只能从一个门进来,人全挤一堆啦 唉,今天就教你们 如何用Python采集全球疫情数据,并 ...

  3. python 抓取解析接口数据_[干货]用python抓取摩拜单车API数据并做可视化分析(源码)...

    原标题:[干货]用python抓取摩拜单车API数据并做可视化分析(源码) 在APP中能看到很多单车,但走到那里的时候,才发现车并不在那里.有些车不知道藏到了哪里:有些车或许是在高楼的后面,由于有GP ...

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

    愿世界再无病痛,盼疫情早日结束 序言 效果展示 准备工作 代码展示 序言 疫情降临转眼已经第三年了,时间过得真快,愿疫情早点结束,世界不再多灾多难. 最近疫情稍微好转一些了,所以咱们获取一下最新的疫情 ...

  5. 手工填报的数据能做可视化分析吗?

    手工填报的数据能不能做可视化分析?该怎么做?效果如何? 我们公司既有手工填报的数据,也有存放在其他不同数据系统中的,能不能都做成可视化分析效果? 如果你也有以上疑惑,请继续往下看! 手工填报.数据源不 ...

  6. Python采集天气数据,做可视化分析【附源码】

    知识点: 动态数据抓包 requests发送请求 结构化+非结构化数据解析 开发环境: python 3.8 运行代码 pycharm 2021.2 辅助敲代码 requests 如果安装python ...

  7. python采集火热弹幕数据并做词云图可视化分析

    前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 这里写目录标题 前言 知识点介绍: 环境介绍: 代码实现: 代码 词云图 尾语

  8. 【Python实战】全球疫情数据采集, 并做可视化展示

    前言

  9. Python采集二手房源数据信息并做可视化展示

    目录标题 前言 环境使用: 模块使用: python技术实现: <基本流程步骤> 代码展示 尾语 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 环境使用: Python 3.8 jupyt ...

  10. 【Python】实时采集疫情数据,打造可视化地图,防疫从你我做起

    文章目录 一.写在前面 二.准备工作 2.1.开发环境 2.2.知识点 三.爬虫部分 3.1.爬虫流程 3.2.数据采集 四.数据可视化部分 五.视频教程 六.写在最后 一.写在前面 兄弟们,最近又是 ...

最新文章

  1. 热烈庆贺清明小长假的到来
  2. 浅析工业级物联网项目的快速开发
  3. ux和ui_设计更好的结帐体验-UX / UI案例研究
  4. 计算机网络 --- 数据链路层CSMA/CA协议
  5. pvrect r语言 聚类_R语言常用统计方法包+机器学习包(名称、简介)
  6. 设置随机种子之后,网络训练结果仍然不同的解决方法(针对随机采样的数据集)torch设置随机种子,num_worker对数据采样的影响。
  7. Java多线程学习笔记-线程的使用
  8. 《RabbitMQ 实战指南》第三章 客户端开发向导
  9. vue 文件导入服务器,Vue 如何import服务器上的js配置文件
  10. FlutterFragment 踩坑记
  11. mysql管理系统需求分析_教学管理系统需求分析报告
  12. asps英文_汽车术语中英文对照
  13. Result类的写法
  14. 【下载】《大教堂和市集》:开放源代码运动的《圣经》
  15. Excel去除重复项的几种方法
  16. 用poi 给word文档添加水印
  17. eclipse 使用maven打包 包含非java文件时报错
  18. adf盖怎么打开_兄弟7470d显示ADF盖打开是什么问?
  19. 阿里云共享流量包是用来干什么的?
  20. 计算机科学计算的方面,计算机的科学计算功能在工程领域中的应用.doc

热门文章

  1. 如何出售自己的代码并且不让人看到自己的源码?
  2. mysql数据库输出数据语法错误_MySQL数据库定义存储过程总是报语法错误的解决方法...
  3. 经典游戏PK:魔兽争霸VS星际争霸VS红警
  4. EM算法及对GMM的参数估计(EM算法的R实现 vs R mclust包)
  5. python的debug为什么点第一行直接运行结束了_Python 代码调试工具 pdb 快速入门
  6. CVPR 2021 论文解读Vol.10 | 通用实例蒸馏GID:青出于蓝而胜于蓝
  7. 补单加直通车使用方式技巧,快速起爆单品
  8. kappa一致性检验教程_Kappa一致性分析
  9. RNA-seq那些事儿
  10. 教师对php作品评语通用,教师批改作业100例精彩评语,太有用了!