python 爬虫爬取疫情数据,基于pyecharts绘制交互式可视化疫情地图【所有源码在最下方链接】(三)

源码放在最下方链接 

疫情数据获取相关文章:

 python 爬虫爬取疫情数据,爬虫思路和技术你全都有哈(一)_源源佩奇的博客-CSDN博客

 python 爬虫爬取疫情数据,爬虫思路和技术你全都有哈(二)_源源佩奇的博客-CSDN博客

目录

获取地图数据

制作地图函数

调用函数

绘制地图

源码链接:


获取地图数据

因为制作疫情地图的数据不一样,所以结合上面的函数,我们还需要另写一个函数来获得我们所需要的数据。

def CityName(json_list):
    print('FileName  ------  4')
    domestic = json_list['component'][0]['caseList']  # 国内疫情情况
    # sql = f"insert city(CityName,provinceCode,provinceCity) values('全国',0,null)"
    # cursor.execute(sql)
    # sql1 = f"insert city(CityName,provinceCode,provinceCity) values('全国',null,0)"
    # cursor.execute(sql1)
    # conn.commit()
    name = {}  # 名字存储用于城市级联
    chian_province = []  # 存储地图所需的省名及数据
    i = 0
    for province in domestic:
        i += 1
        temp_name = []  # 临时存储名字
        temp_name.append(province["area"])  # 添加省名
        # print(province)

        temp_province = []  # 临时存储地图名字和数据
        temp_province.append(province["area"])
        temp_province.append(province['curConfirm'])
        chian_province.append(temp_province)

        # # 定义sql语句,存储数据库中
        # sql = f"insert city(CityName,provinceCode,provinceCity) values('{province['area']}',{i},null)"
        # cursor.execute(sql)
        #
        # sql1 = f"insert city(CityName,provinceCode,provinceCity) values('{province['area']}',null,{i})"
        # cursor.execute(sql1)
        # conn.commit()
        for city in province['subList']:
            # print(city)
            if city['city'] == '境外输入':
                continue
            elif city['city'] == '待确认':
                continue
            elif city['city'].find('外') != -1 and city['city'].find('来') != -1:
                continue
            elif city['city'] == '涉冬(残)奥闭环人员':
                continue

            # sql = f"insert city(CityName,provinceCode,provinceCity) values('{city['city']}',null,{i})"
            # cursor.execute(sql)
            # conn.commit()

            # 添加市名
            temp_name.append(city['city'])
            # 添加名字到字典name中
        name[province["area"]] = temp_name

    return name, chian_province

这样我们就得到了chian_province 这个变量,这里面就存储着疫情地图所需要的数据:

数据如下:

[['西藏', '36'], ['澳门', '1'], ['青海', '54'], ['台湾', '8135316'], ['香港', '342798'], ['贵州', '99'], ['吉林', '11'], ['新疆', '567'], ['宁夏', '1'], ['内蒙古', '1157'], ['甘肃', '91'], ['天津', '76'], ['山西', '1200'], ['辽宁', '60'], ['黑龙江', '155'], ['海南', '26'], ['河北', '29'], ['陕西', '448'], ['云南', '521'], ['广西', '9'], ['福建', '304'], ['上海', '61'], ['北京', '1630'], ['江苏', '215'], ['四川', '917'], ['山东', '152'], ['江西', '6'], ['重庆', '2004'], ['安徽', '20'], ['湖南', '147'], ['河南', '2468'], ['广东', '9350'], ['浙江', '192'], ['湖北', '41']]
 

制作地图函数

然后就就需要写一个绘制地图的函数

def doEcahartChian(City):
    print('doEcahartChian  ------  6')
    print(City)
    '''
         作用:生成中国疫情地图
        '''
    pieces = [
        {'min': 10000, 'color': '#540d0d'},
        {'max': 9999, 'min': 1000, 'color': '#9c1414'},
        {'max': 999, 'min': 500, 'color': '#d92727'},
        {'max': 499, 'min': 100, 'color': '#ed3232'},
        {'max': 99, 'min': 10, 'color': '#f27777'},
        {'max': 9, 'min': 1, 'color': '#f7adad'},
        {'max': 0, 'color': '#f7e4e4'},
    ]

    (
        Map()
            .add(
            series_name="现存确诊",
            data_pair=City,
            maptype="china",
            # 是否默认选中,默认为True
            is_selected=True,
            # 是否启用鼠标滚轮缩放和拖动平移,默认为True
            is_roam=False,
            # 是否显示图形标记,默认为True
            is_map_symbol_show=False
        )
            # 系列配置项
            # 关闭标签名称显示
            .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
            # 全局配置项
            .set_global_opts(
            # 设置标题
            title_opts=opts.TitleOpts(title="中国疫情地图"),
            # 设置视觉配置项分段显示
            visualmap_opts=opts.VisualMapOpts(
                pieces=pieces,
                is_piecewise=True,
                is_show=True
            )
        )
            # 生成本地html文件
            .render("ChianMap.html")

    )

这一步完成之后,就需要进行调用这两个函数,根据第一篇讲到的数据清晰。

调用函数

调用函数如下:

json_list  接受数据清洗的结果

def ecahartChianMain(json_list):
    print('ecahartChianMain    ----    7')
    City = FileNameMap(json_list)[1]
    doEcahartChian(City)
    print("地图绘制成功")

绘制地图

最后一步,进行调用所有函数,绘制题图

    url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_aladin_banner&city='
    resp = HTTP_get(url) # http请求
    json_list = xpath_json(resp) # 数据清晰
    ecahartChianMain(json_list)  # 绘制中国地图

结果如下:

源码链接:

爬虫脚本/疫情爬虫脚本/dome.py · Ly/爬虫脚本 - Gitee.com

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源源佩奇

一起进步,提高自己。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值