Python学习016:自动抓取全国防疫数据并生成疫情地图

优采云 发布时间: 2022-07-03 15:18

  Python学习016:自动抓取全国防疫数据并生成疫情地图

  1、工作常见案例

  以前特别羡慕能够把中国动态地图放进PPT中,然后还能像网页一样操作的人。今天我们用Python来盘它,疫情的数据来数据抓取于疫情实时大数据报告。

  2、程序详解

  2.1 首先引入json、requests、pyecharts、lxml第三方库

  

  import jsonimport requestsfrom pyecharts.charts import *from pyecharts import options as optsfrom lxml import etree

  2.2设置好headers以及需要抓取数据的网站

  headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',}url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_aladin_banner'

  2.3获取最新的疫情数据,第一行是获去网页数据,第二行是将获取的内容赋值给data,第三行是设置空的列表参数,第四行将字符串参数变为Element对象,以便使用xpath()等方法,第五行使用xpath、json.loads获得数据字典

  response= requests.get(url, headers=headers)data=response.contentprovince_data = []html=etree.HTML(data)# print(etree.tostring(html,encoding="utf-8").decode("utf-8"))#用于过程测试时查看html数据ul = json.loads(html.xpath("//*[@id='captain-config']/text()")[0])ul=ul["component"][0]["caseList"]# print(ul)#用于过程测试时查看ul数据

  2.4将字典的值赋值到province_data参数中

  

  for item in ul: province_data.append((item['area'], item['curConfirm']))

  2.5使用opts将province_data的数值传递到地图中,并生成网页

  china_map = ( Map(init_opts=opts.InitOpts(theme='dark')) .add('确诊人数', province_data, 'china', is_map_symbol_show=False, is_roam=False) .set_series_opts(label_opts=opts.LabelOpts(is_show=True, color='#ffffff')) .set_global_opts( title_opts=opts.TitleOpts(title="中国疫情当前确诊人数地图"), legend_opts=opts.LegendOpts(is_show=False), visualmap_opts=opts.VisualMapOpts(max_=2000, is_piecewise=True, pieces=[ {"max": 9999999, "min": 10000, "label": "≥10000人", "color": "#B40500"}, {"max": 9999, "min": 1000, "label": "1000-9999人", "color": "#DF0100"}, {"max": 999, "min": 100, "label": "100-999人", "color": "#F78180"}, {"max": 99, "min": 10, "label": "10-99人", "color": "#F5A9A0"}, {"max": 9, "min": 0, "label": "1-9人", "color": "#FFFFC0"}, ]) ))china_map.render(path='目前疫情地图.html')

  3、运行结果

  我们所需要的疫情地图就完成了,你可以在每一块上面都看到数据,这个其实还可以用其他的数据进行操作,这里只是举例。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线