(新)腾讯全国疫情动态 + pyecharts可视化

因为上一个全国疫情动态的URL出错了,所以我用了另一个接口,这篇与上一篇内容是一样的,只是URL不一样,所以话不多说,直接亮代码

import time
import requests
import json
from fake_useragent import UserAgent
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Pie, Grid, Map


class EpidemicSpider(object):
    def __init__(self):
        # self.sjc = int(time.time()*1000)
        # self.url = f'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=_&_={self.sjc}'
        self.url = 'https://api.inews.qq.com/newsqa/v1/query/inner/publish/modules/list?modules=statisGradeCityDetail,diseaseh5Shelf'
        self.ua = UserAgent()
        self.headers = {
            'user_agent': self.ua.random,
        }

    def parse_response(self):
        response = requests.post(self.url, headers=self.headers).text
        data_th = json.loads(response)['data']['diseaseh5Shelf']['areaTree'][0]['children']  # 拿到json数据中 children 的值
        # 设置一个数据集
        data_set = []
        for i in data_th:
            # 创建空字典
            data_dict = {}
            # 地区名称
            data_dict['province'] = i['name']
            # 疫情数据
            data_dict['nowConfirm'] = i['total']['nowConfirm']  # 现有确诊
            data_dict['confirm'] = i['total']['confirm']  # 累计确诊
            data_dict['addconfirm'] = i['today']['confirm']  # 新增确诊
            data_dict['dead'] = i['total']['dead']  # 死亡人数
            data_dict['heal'] = i['total']['heal']  # 治愈人数
            data_dict['wzz'] = i['total']['wzz']  # 本土无症状确诊
            data_dict['provinceLocalConfirm'] = i['total']['provinceLocalConfirm']  # 地区本地确诊
            data_set.append(data_dict)
        fd = pd.DataFrame(data_set)  # 制成表格
        # fd.to_excel('全国地区疫情数据.xls')  # 保存Excel
        fd2 = fd.sort_values(by=['nowConfirm'], ascending=False)  # 根据 'nowConfirm' 以多到少向下排序
        self.drawing(fd)

     def drawing(self, fd):
        china_map = (
            Map()
            # china--意为中国地图
            .add('现有确诊', [list(i) for i in zip(fd['province'], fd['nowConfirm'])], 'china', is_map_symbol_show=False)
            .add('治愈人数', [list(i) for i in zip(fd['province'], fd['heal'])], 'china', is_map_symbol_show=False)
            .add('累计确诊', [list(i) for i in zip(fd['province'], fd['confirm'])], 'china', is_map_symbol_show=False)
            .add('新增确诊', [list(i) for i in zip(fd['province'], fd['addconfirm'])], 'china', is_map_symbol_show=False)
            .set_global_opts(
                title_opts=opts.TitleOpts(title='各地区疫情情况'),
                visualmap_opts=opts.VisualMapOpts(max_=500, is_piecewise=True),
                legend_opts=opts.LegendOpts(pos_left='90%', pos_top='60%')
            )
        )
        china_map.render('map.html')


if __name__ == '__main__':
    e = EpidemicSpider()
    e.parse_response()

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值