Django+Ercharts+Python爬虫 绘制中国疫情地图

Django+Ercharts+Python爬虫 绘制中国疫情地图_第1张图片

Django+Ercharts+Python爬虫 绘制中国疫情地图_第2张图片

 

 

1、获取数据

地址:https://voice.baidu.com/act/newpneumonia/newpneumonia

Django+Ercharts+Python爬虫 绘制中国疫情地图_第3张图片

 通过python来获取数据

import requests
from lxml import etree
import json
import openpyxl

#爬虫
url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia'
headers = {
    "User-Agent": "自己的user-agent"
}

response = requests.get(url=url,headers=headers).text
#在使用xpath的时候要用树形态
html = etree.HTML(response)
#用xpath来获取之前找到的页面json数据 
json_text = html.xpath('//script[@type="application/json"]/text()')
json_text = json_text[0]
# print(json_text)

解析json数据:

#用python本地自带的库转换一下json数据
result = json.loads(json_text)
# print(result)

#通过打印出转换的对象我们可以看到我们要的数据都要key为component对应的值之下  
所以现在我们将值拿出来
result = result["component"]
# 再次打印看看结果
# print(result)

# 获取国内当前数据
result = result[0]['caseList']
# print(result)

将获取到的数据保存到excel中

# 创建工作簿
wb = openpyxl.Workbook()
# 创建工作表
ws = wb.active
# 设置表的标题
ws.title = "国内疫情"
# 写入表头
ws.append(["省份","累计确诊","死亡","治愈"])
#获取各省份的数据并写入
for line in result:
    line_name = [line["area"],line["confirmed"],line["died"],line["crued"]]
    for ele in line_name:
        if ele == '':
            ele = 0
    ws.append(line_name)
#保存到excel中
wb.save('./china.xlsx')

查看获取到的数据

Django+Ercharts+Python爬虫 绘制中国疫情地图_第4张图片

 2、数据可视化

在django里面创建app--->demo

在demo.views.py里面编写视图函数,将数据传到前端

def map(request):
    # 设置列对齐
    pd.set_option('display.unicode.ambiguous_as_wide', True)
    pd.set_option('display.unicode.east_asian_width', True)
    # 打开文件
    df = pd.read_excel('./china.xlsx')
    # 对省份进行统计
    data2 = df['省份']
    data2_list = list(data2)
    data3 = df['累计确诊']
    data3_list = list(data3)
    data4 = df['死亡']
    data4_list = list(data4)
    data5 = df['治愈']
    data5_list = list(data5)
    lists = [list (a) for a in zip(data2,data3)]
    print(lists)
    keys = ['name','value']
    list_joson = [dict(zip(keys,item)) for item in lists]
    str_json = json.dumps(list_joson,indent=2,ensure_ascii=False)
    print(str_json)
    context = {"datas":str_json}
    return render(request, 'test2.html', context)

配置urls

    url(r'^demo/test2',demo.views.map),

编写html,用ercharts绘制中国疫情地图

并设置,点击某个省份的小图标,则可跳转到具体的省份地图,双击则退回全国地图。






HTML5 Canvas实现中国地图DEMO演示









你可能感兴趣的:(Django,python爬虫,数据可视化,echarts,django,爬虫)