前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬取丁香医生生成疫情热力地图

爬取丁香医生生成疫情热力地图

作者头像
用户6825444
发布2020-02-24 18:04:50
1.6K0
发布2020-02-24 18:04:50
举报
文章被收录于专栏:木下学Python木下学Python

前言

最近疫情泛滥,大家注意防护,尽量少出门,在家也别忘了学习~

小编针对疫情实况数据进行了了爬取,并生成了可视化地图。

让我们在防护的同时,也来学习一下吧~

项目简介

https://ncov.dxy.cn/ncovh5/view/pneumonia?scene=2&clicktime=1579584467&enterid=1579584467&from=timeline&isappinstalled=0

我们爬取的是丁香医生的实时数据,下图勾画出来的是爬取的目标之一,是全国疫情数据,爬取截至数据统计时间,确诊数,疑似数,重症数,死亡数,治愈数,写入 csv 文件保存,其中文件名以截至时间命名:

目标二,我们往下滑,会看见地区,确诊,死亡,治愈的数据,我们就是把它们全都爬取下来,只需要中国的,其他欧洲,北美洲等,不需要:

JavaScript 判断

我们打开网页,先判断我们所需要的数据是否为动态加载,点击 url 左边的锁,禁止 JavaScript 加载,然后刷新网页:

刷新后的结果,我们可以看到什么都没有了,那说明我们需要的数据是动态加载的,我们把网页还原,把 JavaScript 设为允许加载即可。

数据源分析

我们打开开发者工具,切换到 Doc 选项卡查看当前网页加载的 html:

我们从上图可以看到关键数据没有加载,是通过勾画出来的文件请求生成的,我们从从看到 js 字样,那我们去 JS 选项卡找到它:

我们查看了这些 js 代码,在其中搜索数据,一个也没有,但数据就只请求这个 js 文件后展示在网页的,下边看了看有 3w 多行 js 代码,于是小编选择绕开,使用 selenium,即可绕开,效率没有太大影响。

网页源码获取

我们选择 selenium 访问这个页面,直接得到渲染后的 html,在从中提取我们的数据,请求代码如下,我们设置了请求头,加了无头模式,返回渲染后的 html:

这样我们就绕开了复杂的分析,直接获取了渲染后的 html。

提取全国疫情数据

我们先提目标一,全国疫情数据,并以截至时间创建 csv 文件,我们全部提取采用 bs4 库提取,我们以截至时间提取为例,在截至时间右键【检查】:

我们可以使用 find 方法提取出其中的文本,下面的确诊数,死亡数,治愈数也是一样的:

我们得到这部分数据后,其中包含了截至时间,我们以截至时间为文件名,创建 csv 文件保存数据:

提取各个省份数据

提取省份的数据也和上面一样的,也是用 find 方法即可,其中在匹配的标签中有些多余的,例如重复的标签,或者不是数据的标签,或者是外国地区的标签,我们都剔除掉:

写入 csv

我们爬取的数据是都先用一个列表存储的,全部爬取完毕后,再统一写入的:

结果展示

小编分三个时间段运行了三次,所以有三个 csv 文件,对应不同的时间段:

热力地图

在得到数据后,我们使用 pyecharts 库生成热力地图:

END

这样我们一个爬虫小项目就完成了~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木下学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档