嗨嗨,大家好~
今天真的是刚睡醒就知道RNG八人确诊,这年头出国打个比赛都这么不容易,希望早日康复~
唉,今天就教你们
如何用Python采集全球疫情数据,并做可视化分析
知识点:
- 爬虫基本流程
- requests 发送请求
- re 正则表达式
- json 结构化数据解析
开发环境:
-
python 3.8: 解释器
-
pycharm: 代码编辑器
-
requests 发送请求
-
pyecharts 绘制图表
-
pandas 读取数据
基本原理:
模拟成 浏览器/客户端 向 服务器 发送请求的过程
思路:
找到数据来源
- 静态的数据: 你在右键点击查看网页源代码 能够找到的数据
- 动态的数据: 你在右键点击查看网页源代码 找不到的数据
实现爬虫代码的流程:
- 发送请求 (通过 代码的方式访问上方的数据来源/访问网站)
- 获取数据
- 解析数据
- 保存数据
采集代码
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'
- 发送请求
response = requests.post(url)
<Response [200]>: 200, 请求成功了
- 获取数据
.text: 直接获取文本内容
.json(): 字典 键值对的方式把数据取出来
.content: 获取二进制内容, 视频 / 音频 / 图片
json_data = response.json()
- 解析数据
结构非常的标准
结构化的数据 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)
- 保存数据
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'