2020.2.4更新

完整的项目工程地址https://github.com/Arithmeticjia/wuhan

2020.1.26更新

几乎每天页面都在变,放一下最新的爬虫代码,由于页面需要滚动,加入了selenium

def china_wuhan(request):import requestsfrom bs4 import BeautifulSoupfrom selenium import webdrivertry:target = 'https://3g.dxy.cn/newh5/view/pneumonia?scene=2&clicktime=1579579384&enterid=1579579384&from=groupmessage&isappinstalled=0'# req = requests.get(url=target)# req.encoding = 'urf-8'# html = req.textoption = webdriver.ChromeOptions()option.add_argument('headless')  # 设置option,后台运行driver = webdriver.Chrome(chrome_options=option)driver.get(target)js = "var q=document.documentElement.scrollTop=1500"driver.execute_script(js)selenium_page = driver.page_sourcedriver.quit()soup = BeautifulSoup(selenium_page, 'html.parser')cities = soup.find('div', {'class': 'areaBox___3jZkr'})# 每个省protocols = cities.find_all('div')data = {}for i in protocols:try:first = i.find('div', {'class': 'areaBlock1___3V3UU'})content = first.find_all('p')name = content[0].get_text()num = content[1].get_text()if num == "":num = 0data['{}'.format(name)] = numexcept AttributeError as e:continueexcept:data = {}context = {'data': data}return render(request, 'china-wuhan.html', context=context)

1、软件准备

1、Django2.1
2、request
3、bs4
import requests
from bs4 import BeautifulSouptarget = 'https://3g.dxy.cn/newh5/view/pneumonia?scene=2&clicktime=1579579384&enterid=1579579384&from=groupmessage&isappinstalled=0'
req = requests.get(url=target)
req.encoding = 'urf-8'
html = req.text
soup = BeautifulSoup(html, 'html.parser')
cities = soup.find('div', {'class': 'areaBox___3jZkr'})
# 每个省
protocols = cities.find_all('div')
data = {}for i in protocols:try:first = i.find('div', {'class': 'areaBlock1___3V3UU'})content = first.find_all('p')name = content[0].get_text()num = content[1].get_text()print(num)if num == "":num = 0data['{}'.format(name)] = numprint('疫情:', name, '确诊', num, '例')except AttributeError as e:continue
print(data)

拿到的数据大概是这样

{'湖北': '549', '广东': '53', '浙江': '43', '北京': '26', '上海': '20', '湖南': '9', '安徽': '15', '重庆': '27', '四川': '15', '山东': '9', '广西': '13', '福建': '5', '江苏': '9', '河南': '9', '海南': '8', '天津': '5', '江西': '7', '陕西': '3', '贵州': '3', '辽宁': '3', '香港': '2', '黑龙江': '4', '澳门': '2', '新疆': '2', '甘肃': '2', '云南': '2', '台湾': '1', '山西': '1', '吉林': '3', '河北': '2', '宁夏': '1', '内蒙古': 0}

这是一个字典

然后交给Django返回

def china_wuhan(request):import requestsfrom bs4 import BeautifulSouptarget = 'https://3g.dxy.cn/newh5/view/pneumonia?scene=2&clicktime=1579579384&enterid=1579579384&from=groupmessage&isappinstalled=0'req = requests.get(url=target)req.encoding = 'urf-8'html = req.textsoup = BeautifulSoup(html, 'html.parser')cities = soup.find('div', {'class': 'areaBox___3jZkr'})# 每个省protocols = cities.find_all('div')data = {}for i in protocols:try:first = i.find('div', {'class': 'areaBlock1___3V3UU'})content = first.find_all('p')name = content[0].get_text()num = content[1].get_text()print(num)if num == "":num = 0data['{}'.format(name)] = numexcept AttributeError as e:continuecontext = {'data': data}return render(request, 'china-wuhan.html', context=context)

然后就来到了html,你可以理解为django返回了一个字典格式

对于echarts来说,它需要的数据格式是

var datavirus=[{name:"南海诸岛",value: 0},{name: '北京', value: 14},{name: '天津', value: 4},{name: '上海', value: 16},{name: '重庆', value: 9},{name: '河北', value: 1},......
]

那么从django返回数据就是这样用

data: [{% for key,value in data.items%}{value:{{ value }}, name:'{{ key }}'},{% endfor %}]

展示链接https://www.guanacossj.com/china-wuhan/

下面放一下完整的html代码,自行修改

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="shortcut icon" href="/static/images/写博客.png"><title>武汉加油</title><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/><script src="/static/china/dist/echarts.js"></script><script src="/static/china/map/js/china.js"></script><style>*{margin:0;padding:0}html,body{width:100%;height:100%;}#main{width:850px;height:637.5px;margin: 150px auto;border:1px solid #ddd;}/*默认长宽比0.75*/</style>
</head>
<body><div id="main"></div><script type="text/javascript">var dataList=[{name:"南海诸岛",value: virus(0)},{name: '北京', value: virus(14)},{name: '天津', value: virus(4)},{name: '上海', value: virus(16)},{name: '重庆', value: virus(9)},{name: '河北', value: virus(1)},{name: '河南', value: virus(5)},{name: '云南', value: virus(1)},{name: '辽宁', value: virus(3)},{name: '黑龙江', value: virus(1)},{name: '湖南', value: virus(9)},{name: '安徽', value: virus(9)},{name: '山东', value: virus(6)},{name: '新疆', value: virus(0)},{name: '江苏', value: virus(1)},{name: '浙江', value: virus(10)},{name: '江西', value: virus(3)},{name: '湖北', value: virus(444)},{name: '广西', value: virus(5)},{name: '甘肃', value: virus(0)},{name: '山西', value: virus(1)},{name: '内蒙古', value: virus(-1)},{name: '陕西', value: virus(4)},{name: '吉林', value: virus(1)},{name: '福建', value: virus(4)},{name: '贵州', value: virus(3)},{name: '广东', value: virus(32)},{name: '青海', value: virus(0)},{name: '西藏', value: virus(0)},{name: '四川', value: virus(8)},{name: '宁夏', value: virus(1)},{name: '海南', value: virus(4)},{name: '台湾', value: virus(1)},{name: '香港', value: virus(1)},{name: '澳门', value: virus(2)}];var datavirus=[{name:"南海诸岛",value: 0},{name: '北京', value: 14},{name: '天津', value: 4},{name: '上海', value: 16},{name: '重庆', value: 9},{name: '河北', value: 1},{name: '河南', value: 5},{name: '云南', value: 1},{name: '辽宁', value: 3},{name: '黑龙江', value: 1},{name: '湖南', value: 9},{name: '安徽', value: 9},{name: '山东', value: 6},{name: '新疆', value: 0},{name: '江苏', value: 1},{name: '浙江', value: 10},{name: '江西', value: 3},{name: '湖北', value: 444},{name: '广西', value: 5},{name: '甘肃', value: 0},{name: '山西', value: 1},{name: '内蒙古', value: 0},{name: '陕西', value: 4},{name: '吉林', value: 1},{name: '福建', value: 4},{name: '贵州', value: 3},{name: '广东', value: 32},{name: '青海', value: 0},{name: '西藏', value: 0},{name: '四川', value: 8},{name: '宁夏', value: 1},{name: '海南', value: 5},{name: '台湾', value: 1},{name: '香港', value: 1},{name: '澳门', value: 2}];var myChart = echarts.init(document.getElementById('main'));function randomValue() {return Math.round(Math.random()*1000);}function virus(num){if (num === 0){return 0;}else if(num >= 1 && num <= 9){return 2;}else if(num >=10 && num <= 100){return 3;}else if(num > 100){return 4;}elsereturn 1;}option = {backgroundColor: '#404a59',title:  {text: '武汉',x: 'center',textStyle: {//主标题文本样式{"fontSize": 18,"fontWeight": "bolder","color": "#333"}fontSize:28,color: '#fff'},},tooltip: {formatter:function(params,ticket, callback){return params.seriesName+'<br />'+params.name+':'+params.value}//数据格式化},visualMap: {min: 0,max: 50,align: 'auto',{#type: 'piecewise',    //是否连续#}left: 'left',top: 'bottom',text: ['高','低'],    //取值范围的文字{#categories: [#}{#    '0','1','2','3','4','5','6','7','8','9','10','14','16','32','444',#}{#],#}inRange: {color: ['#fdfff8','#f0a23f','#dd5340','#dd292f','#DD2020'],{#color: {#}{#    '0':'#fcffde',#}{#    '1':'#ffaa2a',#}{#    '2':'#ffaa2a',#}{#    '3':'#ffaa2a',#}{#    '4':'#ffaa2a',#}{#    '5':'#ffaa2a',#}{#    '6':'#ffaa2a',#}{#    '7':'#ffaa2a',#}{#    '8':'#ffaa2a',#}{#    '9':'#ffaa2a',#}{#    '10':'#f06a5c',#}{#    '14':'#f06a5c',#}{#    '16':'#f06a5c',#}{#    '32':'#f06a5c',#}{#    '444':'#dd292f',#}//取值范围的颜色},show:false//图注},geo: {map: 'china',roam: false,//不开启缩放和平移zoom:1.23,//视角缩放比例label: {normal: {show: true,fontSize:'10',color: 'rgba(0,0,0,0.7)'}},itemStyle: {normal:{borderColor: 'rgba(0, 0, 0, 0.2)'},emphasis:{areaColor: '#53adf3',//鼠标选择区域颜色shadowOffsetX: 0,shadowOffsetY: 0,shadowBlur: 20,borderWidth: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}},series : [{name: '确诊人数',type: 'map',geoIndex: 0,data: [{% for key,value in data.items%}{value:{{ value }}, name:'{{ key }}'},{% endfor %}]}]};myChart.setOption(option);myChart.on('click', function (params) {alert(params.name+"确诊人数"+params.data['value']);});/*  setTimeout(function () {myChart.setOption({series : [{name: '信息量',type: 'map',geoIndex: 0,data:dataList}]});},1000)*/</script>
</body>
</html>

python爬取丁香园的疫情数据绘制Echarts地图相关推荐

  1. python爬取丁香园首页疫情json数据,尝试存入mysql数据库

    新手练python爬虫 # -*- coding:utf-8 -*- """ 作者:孙敏 日期:2022年01月01日 """ import ...

  2. 利用paddlepaddle爬取丁香园实时统计数据,并生成疫情地图!!

    当下,新型冠状病毒感染的肺炎疫情无时无刻不牵动着人们的心.面对来势汹汹的疫情,除了奋战在前线的医护人员以及防疫建设工作者们,小媛们也想尽一份绵薄之力. 这不,今天为大家带来了一份超超超简单的!生成自己 ...

  3. 用python爬取全国和全球疫情数据,并进行可视化分析(过程详细代码可运行)

    用Python爬取最新疫情数据 这次重大疫情,每时每刻数据都有可能变化,这篇博文将为大家讲解如何爬取实时疫情数据,并且分析数据,作出数据可视化的效果. 报告梗概: 对中国疫情分析 1.1 展示各省疫情 ...

  4. 简单的爬取网页基本信息(疫情数据)

    文章目录 前言 一.项目简介 二.项目实现过程 1.查看限制 2.读入数据 三.项目效果 总结 前言 随着网络的迅速发展,网络称为大量信息的载体,如何有效地提取并利用这些信息成为巨大的挑战.网络爬虫是 ...

  5. [转载] python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器)

    参考链接: Python vars() python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器) 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造 ...

  6. python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器)

    python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器) 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关 目录 python ...

  7. 利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息

    新增:国外疫情网站介绍 已更新:爬取国外疫情数据 已更新:新型肺炎历史数据下载 2020年3月27日补充: 制作了一个全球肺炎数据查询下载网站,效果如下: 访问地址:http://119.3.227. ...

  8. python爬取电脑本地数据_利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息...

    原标题:利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息 新型肺炎肆虐全国,可以预知,最近一两年地理学中会有一部分论文研究新型肺炎的空间分布及与其他指标的关联分析.获取其患病人 ...

  9. Python爬虫笔记(3)- 爬取丁香园留言

    Python爬虫笔记(3)- 爬取丁香园留言 爬取丁香园留言:主要用到了模拟登录 爬取丁香园留言:主要用到了模拟登录 import requests, json, re, random,time fr ...

最新文章

  1. 如何直接将HTML代码加载到TWebBrowser
  2. 两道相似题——water-easyJavabeans
  3. SPringMVC使用总结
  4. android bitmap drawable 互转
  5. 欢乐纪中某B组赛【2018.12.8】
  6. STM32F0单片机快速入门八 聊聊 Coolie DMA
  7. python基础整理——关于进制输出初探
  8. 如何查看mysql数据库的端口
  9. python url拼接_简单一文教你如何用python爬虫爬取扇贝单词
  10. php huoqv 多选,镊噍虫刻蘖舌#joquycg
  11. RecyclerView 实现多种布局(上半部Gridview样式,下半部Listview样式)以及多种数据类型实现不同布局
  12. 使用微信企业号群发员工工资条
  13. 计算机与英语的关系论文摘要,中国计算机专业研究生英文学术论文摘要中元话语的使用与特征研究...
  14. weka API,创建线性回归时出现缺少no.uib.cipr.matrix和org.netlib.blas的解决方案
  15. 扩展Win7虚拟机硬盘
  16. 度歌虎山寨搜索引擎创始人竟是“90后”
  17. UML工具Visual Paradigm v16.3发布:新增40种图表类型,模板更具针对性,让你轻松上手
  18. Latex制作三线表 Latex制作复杂表格 加彩色边框高亮显示
  19. 前端websocket劫持漏洞(CSWSH)
  20. 源码多多-Discuz x2.5 论坛防灌水机制分析和设置方法

热门文章

  1. 几家大厂求职与面试(一):Java必备,不看就是遗憾
  2. C语言——有一个已经排好序的数组,要求输入一个数后,按原来顺序的规律将它插入数组中。
  3. 威联通NAS配置1.18.1Minecraft服务器
  4. Ubuntu16.04下gdb工具gef的安装 wget命令详解
  5. arduino智能浇花系统_智能自浇花系统
  6. python高级特性的学习
  7. [hiho 14]并查集
  8. 函数式思维: 运用函数式思维,第2 部分
  9. 双窗格文件管理器:Commander One PRO Mac中文版
  10. Flutter 路由源码解析