基于Python的疫情数据的爬取与分析

来源 :科学导报·学术 | 被引量 : 0次 | 上传用户:abwyn12
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘  要:目的:直观显示新型冠状病毒(2019-nCoV)肺炎疫情的发展趋势,为复工复产的决策提供决策依据。方法:基于Python语言、使用requests库下载网页,使用re读取目标数据,使用csv存储目标数据、使用pyecharts展示疫情地图分布和疫情发展趋势图、使用Javascript脚本显示趋势图,包括疫情的地图分布,全国疫情新增趋势,全国累计/疑似趋势,全国累计治愈/死亡趋势,全国各省疫情概览表等。结果:得到疫情发展趋势的可视化图表,可以直观显示疫情的发展趋势,全国各省疫情概览表等。我们可以看到,疫情已经趋于平稳。结论:2019-nCoV肺炎疫情的防控措施是有效的,各地方政府严格执行公共安全政策,保证了人民的生命安全,全力遏制了2019-nCoV的传播,夺取了战“疫”的最终胜利。
  关键词:新型冠状病毒;Python;数据可视化;趋势
  新型冠状病毒(2019-nCoV)是一种β属的冠状病毒,自2019年12月在湖北省武汉市发现 2019-nCoV以来,疫情快速蔓延[1]。国家卫生健康委员会疫情通报显示,截至 2020年4月25日早上9点,累计确诊人数 82816人,累计治愈出院病例77346例,累计死亡病例4632例[2]。为快速抑制病情蔓延,国家已出台多种举措,如延长春节假期、企业延迟复工、学校延期开学、限制出行、公共场所要佩戴口罩,居家隔离等。本文基于Python,通过网络爬虫技术收集2019-nCoV疫情数据,通过数据可视化手段,给出疫情的地图分布,全国疫情新增趋势,全国累计/疑似趋势,全国累计治愈/死亡趋势,全国实时疫情概览表等。
  1 对象与方法
  1.1 数据来源
  本文疫情发展数据取自中国疾病预防控制中心周报(以下简称中国疾控中心周报)和丁香园,其地址参看“参考文献”中的[2]和[3]。随着2019-nCoV的快速传播,自1月25日开始,各地纷纷启动“重大突发公共卫生事件Ⅰ级响应”,因此我们认定从1月25 日开始,病毒即进入传播状态。由于数据是从中国疾病预防控制中心周报中读取,比较完整的数据是从1月29日开始,因此,本次采集的数据就是从1月29日开始,直至4月25日零点。
  1.2 疫情数据提取的需求
  设计疫情数据提取的代码要解决的以下几个问题:
  (1)下载网页:根据给定的URL下载其HTML网页。
  (2)网页解析:根据网页结构信息,提取网页数据。
  (3)数据存储:把从网页中解析出来的数据CSV文件中。
  1.3 疫情数据提取的實现方法
  (1)HTML下载器
  本次设计使用requests库和requests-html库来下载网页,分别使用requests来下载中国疾病预防控制中心周报的数据,使用requests-html来下载丁香园的数据。使用requests-html下载网页的核心代码如下所示:
  import requests
  url = 'http://weekly.chinacdc.cn/news/TrackingtheEpidemic.htm'
  r = requests.get(url) #下载网页
  使用requests-html下载网页的核心代码如下所示:
  from requests_html import HTMLSession
  dxyurl = 'https://3g.dxy.cn/newh5/view/pneumonia'
  response = HTMLSession.get(dxyurl)  #下载网页
  (2)HTML解析器
  Python使用BeautifulSoup来进行HTML的解析,提取目标数据。在中国控制中心周报中,我们使用BeautifulSoup直接读取其注释部分,而不是按行读取目标数据所在的XPath。在中国控制中心周报网页中,目标文本是位于标签<div class="box-article-content">中的注释文本。通过分析中国控制中心周报网页数据结构,我们可以通过分割</p>标签,同时为了数据的提取,还要把</p>标签添加回原来的数据项中。提取数据的代码如下:
  soup = BeautifulSoup(page,'html.parser')
  content = soup.find_all("div",'box-article-content') #数据返回为列表
  content_to_string = str(content) #将列表转换成字符串,使用正则表达式提取
  pattern = re.compile(r"<!--(.*?)-->") # 抽取<!--(.*?)-->中间的文本
  通过构建正则表达式,提取网页中的疫情数据。提取的疫情数据分别为日期、新增确诊/疑似病例、累计确诊/现存疑似病例、新增死亡/治愈人数、累计死亡/治愈人数。其正则表达式的构建如下所示:
  date_regex = r"<a href=\"#NHC\w.*?\">(.*?)<"  #提取日期的正则表达式
  conf_suspe_data_regex = r"<p >Confirmed cases:(.*?)new,(.*?)total. Suspected cases:(.*?)new,(.*?)total.<"  #提取新增确诊/疑似病例、累计确诊/现存疑似病例的正则表达式   dea_reco_data_regex = r"<p >Deaths:(.*?)new,(.*?)total. Recoveries:(.*?)new,(.*?)total.<"  #提取新增死亡/治愈人数、累计死亡/治愈人数的正则表达式
  在丁香园的网页中,通过查看网页元素,我们可以看到,目标数据在标签<script script id="getAreaStat">中,其数据以“[”开始,以"]},"结束,所以可以按照"]},"的格式进行分割,其提取的核心代码如下所示:
  items = temp.split("]},") #按“]},”进行分割
  对在丁香园中提取的数据进行格式化,使用JSON读取目标字符串,再进行格式转换成字典,使用字典提取目标数据中的省份相关数据,实现对数据的进一步读取,为后面的存储在CSV文件中做好准备,其实现的核心代码如下:
  js = json.loads(item)
  # 格式转换:JSON->字典
  dc = {}
  dc = dict(js)
  # 省份数据(含城市)
  self.province_list.append(dc)
  2  前端设计
  前端设计的作用是把数据可视化显示在前端页面上。echarts是一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器。使用echart有三个步骤,其一是在页面中指定一個div并指定宽高;其二是在页面中引用JS脚本;其三是在页面加载完毕后调用代码初始化option,其核心代码如下所示:
  <div id="map" style="width:1024px;height:600px;"></div>
  <script>
  $(
  function(){
  #为ECharts准备一个具备大小(宽高)的DOM
  var chart = echarts.init(document.getElementById('map'),'white',{renderer:'canvas'});#一个div只能有一个实例
  $.ajax({
  type:"GET",#请求页面时使用get方法
  url:"http://127.0.0.1:5000/mapChart",#指定文件的路径
  dataType:'json',
  success:function(result){
  chart.setOption(result);#指定图表的配置项和数据
  }  });})
  </script>
  这部分需要在后端代码中添加相应的文件路径,实现前后端的关联。在根目录处需要添加index.html文件其核心代码如下的示:
  @app.route("/")
  def index():
  content = table_base()
  return render_template("index.html",content=content)
  使用pyecharts用于生成 Echarts 图表之后,也要添加相应的URL才能展示在前端上,其核心代码如下所示:
  @app.route("/mapChart")   #对应文件添加URL,此处文件为中国地图
  def get_map_chart(    ):
  c = map_base(    )
  return c.dump_options_with_quotes(    )
  对于其他使用pyecharts生成的图表,包括新增死亡/治愈、累计确诊/疑似、累计死亡/治愈的发展曲线,都是使用前后端关联的方法,展示到前端页面上,使结果直观呈现出来。
  3 结果
  3.1 全国疫情地图分布
  使用pyecharts生成的地图信息如下,从图中我们可以看到省份在这次疫情中的数据分布,本次采集显示的数据分别为确诊人数、治愈人数和死亡人数。
  3.2 全国新增确诊/疑似发展曲线
  使用pyecharts生成的新增确诊/疑似发展曲线如下图所示:
  4 讨论
  本文应用Python进行对数据的爬取,根据中国疾控中心周报和丁香园中的数据生成显示图表,得出本次疫情相关数据的走势图,并结合实际生活中情况,可以看到:在春运的期间,新冠病毒在人口迁移过程中出现大规模的传播。经过3个多月的抗“疫”战争,病毒被成功遏制,处于可控范围内,为世界防疫工作做出了一个典范,但防疫工作仍不可松懈,在常态化的防控疫情的情况下,继续要严格依照国家公共卫生政策,做好持久化防疫的做准备,守住抗“疫”胜利的果实。
  参考文献
  [1]  耿辉,徐安定,王晓艳,张勇,尹小妹,马茂,吕军.基于SEIR模型分析相关干预措施在新型冠状病毒肺炎疫情中的作用[J/OL].暨南大学学报(自然科学与医学版):1-7[2020-04-26].http://kns.cnki.net/kcms/detail/44.1282.n.20200214.1318.002.html.
  [2]  中国疾病预防控制中心.CCDCWeekly[EB/OL].[2020-0426].http://weekly.chinacdc.cn/news/TrackingtheEpidemic.htm.
  [3]  丁香园. [EB/OL].[2020-04-26].https://ncov.dxy.cn/ncovh5/view/pneumonia.
  [4]  范传辉. Python爬虫开发与项目实践[M].北京:机械工业出版社. 2017.6:140-146
其他文献
习近平总书记指出,当前中国处于近代以来最好的发展时期,世界处于百年未有之大变局。中国发展战略机遇期的环境和条件都在发生显著变化,中国面临的战略竞争加剧、战略风险增多、战略压力增大,多重因素的内外叠加和相互影响极大增加了中国维护和延长战略机遇期的成本。“不断增强意识形态领域主导权和话语权”,这是新时代中国特色社会主义现实发展和实践发展的必然选择,也是我国在当前世界“百年未有之大变局”中,积极、冷静应
期刊
摘 要:英语作为国际的通用语言,国人对其的学习一直是热度不减。但是现状是很多中国人学习英语数年,收效却甚微,其中原因之一就是很多学习者不了解英语和汉语之间的相似性,没有利用好汉语这样一个语言工具。本文分析了汉语和英语两种语言的特点,详细的阐述了汉语和英语之间的相似性,旨在为广大的英语学习者扫除部分学习障碍。  关键词:英语;汉语;相似性  在中国绝大多数的地区,一般的学校从小学三年级就开始开设英语
期刊
摘 要:随着科学技术的不断发展,军用飞机的功能逐渐增多,内部的构造也较为复杂,飞机的起落架作为飞机的重要组成部分,承担着重要的职责,但是起落架系统是最容易出现故障的部分,需要及时检修和维护,飞机的起落架收放一旦发生故障不仅会影响飞机的正常运行,甚至会对驾驶员和其他机组人员的生命造成严重的威胁,因此应该重视飞机的起落架收放系统的日常检修和故障的预防工作。本文首先阐述了军用飞机起落架收放系统的工作原理
期刊
摘 要:实验是化学学科教学的重要组成部分,大部分学生对化学学科知识的理解、记忆和掌握都是离不开实验教学的,也因此中学阶段的演示实验、动手实验所占课堂教学比例是很大的。在中学阶段的实验课堂上引入思维导图,不仅可以通过图示、图解更直观形象的阐述化学知识点的联系,还可以更严密的去解释实验发生的化学原理,这对于中学阶段学生化学知识的掌握和化学知识体系的构建是非常有帮助的。  关键词:实验教学;思维导图;师
期刊
摘 要:不可否认受社会发展趋势的影响,英语在现实生活中越来越重要,如何学好英语同样受到高度关注,尤其教育部门对英语教学尤为重视。要想提高英语教学的质量,语音教学是关键。现在边疆地区中学英语教学中存在着很多的问题,但首要和根本的问题就是语音教学。语音是学好英语的根本,所以我对边疆地区的英语语音教学的现状进行了深入的分析,从教师,教材,教学硬件,家庭社会环境等方面深刻剖析了目前边疆地区英语语音存在的问
期刊
摘 要:本文通过研究"互联网+"时代下职业院校德育困境与创新德育体系的构建,调查分析现存问题及原因,并针对问题提出相应的改进意见以及解决方法,通过德育教育课程的教育创新模式,提高教学质量,逐步提高这方面的教学成果,贴近新时代互联网+教育的要求。  关键词:互联网+教育;职业院校;德育教育  在职业院校,不单单学习相关技术,德育的提升也是非常重要的,修炼心性,提高自身的文化内涵,规范行为准则。在职业
期刊
摘 要:在我国经济实力不断提升的环境下,人们不仅对高校专业课程教学质量的提升给予了足够关注,而且对高校各学科思政教学质量的强化给予了前所未有的重视,制定了相关要求的同时,还在高效思政工作会议中明确强调,高校各学科课程的开展都应与思政课程同行,从而使高校教育形成具有较高协同性的立体教学体系。本文针对在新时代背景下,《中国地理》课程思政教育的研究内容以及实践方法展开详细分析,对高校课程思政的理念、内涵
期刊
摘 要:在现代化的时代背景下,以网络为代表的现代信息技术在教学环境中得到了有效应用,于大学英语教学而言,实现了良好的环境创建。但是在具体的应用中需要实现先进技术同大学英语课堂教学的有效整合,这就需要从应用的现实性出发,明确其应用的必要性和可行性,然后同教学实际相结合的基础上,提出基于教学主题的任务驱动教学模式。  关键词:课堂与网络;大学英语;教学模式  随着21 世纪的到来,以网络通讯技术和计算
期刊
摘 要:本文试就2020新冠肺炎疫情背景下,人民内部矛盾产生的原因进行分析,以及此次疫情对这些矛盾产生了怎样的缓解。  关键词:人民内部矛盾;新冠疫情;原因;缓解  人民内部矛盾是在人民利益根本一致的基础上产生的矛盾。它分为阶级内部的矛盾,包括工人阶级内部、农民阶级内部、有产阶级内部矛盾等和阶级之间的矛盾,如工农阶级间的矛盾、工农阶级分别同有产者阶级者间的矛盾等,还有政府与群众之间的矛盾、干部与群
期刊
摘 要: 进入互联网时代,各行各业在新形势下蓬勃发展,电子信息科学与技术也需要在这种大潮流中跟紧时代的步伐,毕竟传统电子信息科学与技术存在不少问题,而在新环境下,人们可以通过互联网技术对传统技术进行创新,为人们的生活提供服务,为企业创造更大效益。  关键词:互联网;电子信息科学与技术;创新  一、电子信息科学技术面临的主要问题  1、用户的满意度有待提升  电子信息产品是为了能给用户提供更加优质全
期刊