在此向全国抗疫的各行各业人士致敬!
什么是pyecharts?
pyecharts 是一个用于生成 Echarts 图表的类库。
echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化。pyecharts 是一个用于生成 Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接。
使用 pyecharts 可以生成独立的网页,也可以在 flask , Django 中集成使用。
pyecharts0.5和1.0在用法上有较大差异,本项目用的是0.5版本
先安装所需的库
pip install pyecharts==0.5.11
pip install echarts-countries-pypkg
pip install pyecharts-snapshot
pip install bs4
pip install webbrowser
pip install selenium
pip install jieba
pip install requests
项目组成
本项目由五个py文件组成,出问题时方便快速定位以及修改,最终效果如下:
1.国内疫情数据获取
国内疫情数据通过腾讯的实时疫情数据平台获取(https://xw.qq.com/act/qgfeiyan)
不难找到他数据来源的json (https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5)
从看似杂乱无章实则井然有序的数据中我们不难发现他的排列规律
接下来就是获取数据并存入MySQL
import json
import pymysql
import requests
#与数据库连接
host = '127.0.0.1'
port = 3306
username = 'user'
password = 'password'
db = 'yq'
charset = 'utf8'
conn = pymysql.Connect(host=host,port=port,user=username,password=password,db=db,charset=charset)
cursor = conn.cursor()
sql="delete from 中国疫情"
try:
cursor.execute(sql)
except:
pass
# 疫情数据的url
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'
response = requests.get(url)
# 发送get请求
result = json.loads(response.text)
#解析获取到的json数据
areaTree = json.loads(result['data'])['areaTree']
for i in areaTree[0]['children']:
sheng_name = i['name'] # 省名
confirm = i['total']['confirm'] # 总数
confirm_add = i['today']['confirm'] # 今日增加数
heal = i['total']['heal'] # 治愈
dead = i['total']['dead'] # 死亡
add = 'insert into 中国疫情(省 , 新增, 总数,治愈, 死亡)values ("%s","%s","%s","%s","%s")' % (sheng_name, confirm_add, confirm, heal, dead)
cursor.execute(add)
conn.commit()
print('爬取成功')
效果如下