Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解

  • 效果图展示
  • 第一章:疫情信息的下载与数据提取
  • ① 爬取页面数据到本地
  • ② json 字符串正则表达式分析
  • ③ 提取数据中的 json 字符串
  • 第二章:疫情信息数据分析
  • ① 提取 json 字符串里的省份疫情数据并显示
  • ② 显示查询省份的城市疫情数据

[ 系列文章篇 ]
Python 地图篇 - 使用 pyecharts 绘制世界地图、中国地图、省级地图、市级地图实例详解

[ 专栏推荐 ]
Python 短视频自动化发布,包含抖音、快手、bilibili、小红书、微视、好看视频、西瓜视频、微信视频号等 10 余种平台

效果图展示

这是省份的:

这是城市的:

第一章:疫情信息的下载与数据提取

① 爬取页面数据到本地


通过 BeautifulSoup 库解析代码,将疫情信息内容下载到本地 txt 文件用于数据分析使用。

from urllib.request import urlopen
from bs4 import BeautifulSoupdef dxy_data_down(article_url):"""xiaolanzao, 2022.02.27【作用】下载疫情数据信息【参数】article_url : 需要下载数据的地址【返回】无"""url = urlopen(article_url)soup = BeautifulSoup(url, 'html.parser')   # parser解析f = open("疫情数据.txt","w",encoding="utf-8")f.write(str(soup))f.close()dxy_data_down("https://ncov.dxy.cn/ncovh5/view/pneumonia")

下载后的数据

② json 字符串正则表达式分析

通过分析文件查找到
需要数据的 json 字符串前关键词 "try { window.getAreaStat = "

json 字符串后关键词 }catch(e){}

(.*?) 是匹配所有内容。
整合的正则表达式为如下:

# json字符串前后关键词
json_start = "try { window.getAreaStat = "
# 字符串包含的括号要进行转义
json_end = "}catch\(e\){}"# json字符串正则匹配
# (.*?)是匹配所有内容
regular_key = json_start + "(.*?)" + json_end

③ 提取数据中的 json 字符串

读取本地文件,提取里面的 json 字符串数据。

import redef get_json():"""xiaolanzao, 2022.02.27【作用】读取本地文件,获取json信息【参数】无【返回】json字符串"""# 读取本地文件f = open("疫情数据.txt", "r", encoding="utf-8")f_content = f.read()f.close()# json字符串前后关键词json_start = "try { window.getAreaStat = "# 字符串包含的括号要进行转义json_end = "}catch\(e\){}"# json字符串正则匹配# (.*?)是匹配所有内容regular_key = json_start + "(.*?)" + json_end# 参数rs.S可以无视换行符,将所有文本视作一个整体进行匹配re_content = re.search(regular_key, f_content, re.S)# group()用于获取正则匹配后的字符串content = re_content.group()# 去除json字符串的前后关键词content = content.replace(json_start, '')# 尾巴要去掉转义符号json_end = "}catch(e){}"content = content.replace(json_end, '')print(content)return contentjson_content = get_json()

读取后的内容:

第二章:疫情信息数据分析

① 提取 json 字符串里的省份疫情数据并显示

方法里所传入的数据是上面返回的 json 字符串。

import jsondef display_provinces(json_content):"""xiaolanzao, 2022.02.27【作用】展示省份疫情【参数】json_content : json字符串【返回】无"""# 将字符串转化为字典json_data = json.loads(json_content)# 省份数据展示print("全国各省份疫情数据如下:")for i in json_data:print("【省份名】:" + i["provinceName"])print("现存确诊:" + str(i["currentConfirmedCount"]))print("累计确诊:" + str(i["confirmedCount"]))print("死亡:" + str(i["deadCount"]))print("治愈:" + str(i["curedCount"]))print()display_provinces(json_content)

运行效果图:

可以对比下数据是一致的

② 显示查询省份的城市疫情数据

城市数据在省份数据的 cities 里面。

import jsondef display_citys(json_content, province_name):"""xiaolanzao, 2022.02.27【作用】展示城市疫情【参数】json_content : json字符串province_name : 需要查询的省份名【返回】无"""# 将字符串转化为字典json_data = json.loads(json_content)# 省份数据展示print(province_name + "疫情数据如下:")for i in json_data:# print(i)if(i["provinceName"] == province_name):# 读取里面的城市信息try:citys = i["cities"]for ii in citys:print("【城市名】:" + ii["cityName"])print("现存确诊:" + str(ii["currentConfirmedCount"]))print("累计确诊:" + str(ii["confirmedCount"]))print("死亡:" + str(ii["deadCount"]))print("治愈:" + str(ii["curedCount"]))print()except Exception as e:print(e)print("没有相应的城市信息!")display_citys(json_content, "河北省")

运行效果图:

可以对比下数据是一致的

喜欢的点个赞❤吧!

每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现相关推荐

  1. python爬虫爬取腾讯网站——实时疫情数据并生成Excel表格

    一.基本介绍: 开发背景:自从2020年新冠疫情发生后,至今为止的相关疫情数据新闻已经是非常的巨大了,我们无时不在在用数据尝试帮助我们解剖全球的疫情状况.由此可见,新冠疫情数据的新闻报道数量与国内疫情 ...

  2. 爬取并处理中国新冠肺炎疫情数据

    项目名称: 爬取并处理中国新冠肺炎疫情数据 目的: 通过Python爬取中国新冠肺炎疫情数据,存入Excel,对此数据分析并进行可视化,制作查询中国疫情情况的GUI界面. 具体内容: 通过Python ...

  3. 【Python】2020年美国新冠肺炎疫情数据分析

    2020年美国新冠肺炎疫情数据分析 一. 需求描述 二. 环境介绍 三. 数据来源描述 四. 数据上传及上传结果查看 五.数据处理过程描述 1.数据集下载 2.格式转换 3.启动Hadoop集群 4. ...

  4. 新冠肺炎疫情数据爬取以及几种简单的地图可视化方法

    众所周知,新冠肺炎疫情是一次很流行的全球性公共卫生事件.如今我国疫情已经好了许多,但世界各国的疫情依然严峻.特殊时期,正好尝试一下疫情网络数据的抓取,并用几种python库对数据进行简单的地图可视化( ...

  5. Python爬虫-爬取全国各地市的邮编链接

    最近练习爬虫,爬取全国各地市的邮编链接,与大家分享,希望起到抛砖引玉的作用. 源代码如下: import requests from lxml import etree headers = {&quo ...

  6. (6)Python爬虫——爬取中新网新闻

    工欲善其事,必先利其器.我们要进行数据挖掘,就必须先获取数据,获取数据的方法有很多种,其中一种就是爬虫.下面我们利用Python2.7,写一个爬虫,专门爬取中新网http://www.chinanew ...

  7. 如何用Python自动爬取全国30+城市地铁图数据?

    阅读本文大概需要 3 分钟. 最近两天工作之余,开始涉猎python,自动爬取了全国30+城市地铁图数据,这里分享下整个爬虫过程 1. 数据来源 首先分析全国各个城市地铁图的数据来源,无非就是百度或者 ...

  8. python爬虫爬取使用Ajax请求的网站数据解析——以梅老板微博为例(m.weibo.cn)

    文章目录 前言 什么是Ajax Ajax基本原理 发送请求 解析内容 渲染网页 Ajax分析方法 查看请求 过滤请求 Ajax结果提取 1.分析请求(since_id解析) 2.分析响应 3.爬取微博 ...

  9. python爬取率_[新手]python爬虫爬取中证指数官网数据

    想用python爬虫获取中证指数官网上的几个主要指数的每日估值更新,但是下载下来的页面内容却没有想要的数据.想要的数据前面有个JavaScript标签,是不是光靠python没办法获取这个数据?求大神 ...

最新文章

  1. fuel6.0安装部署
  2. [译]BEAST还是一个威胁吗?
  3. simpack导入实际线路激励
  4. [GKCTF 2021]Random
  5. 生产力提升! 自己动手自定义Visual Studio 2019的 类创建模板,制作简易版Vsix安装包
  6. 古玩新仿品收藏若干年后有价值吗?
  7. sql高级语法之窗口函数调用
  8. iOS6中旋转的略微改变
  9. 最长XXX子序列(什么都好啦)
  10. java如何连接Oracle数据库问题
  11. Thinpad X1 2017款制作Win10启动盘
  12. android 点餐系统 构思
  13. 微信html页面缓存问题,浅谈微信页面入口文件被缓存解决方案
  14. 洛谷P1563 玩具谜题
  15. 关于微信小程序中的取整
  16. Elasticsearch 原理,安装,生产配置以及常见CRUD,ILM管理,常见API解析,go-elasticsearch-client使用
  17. 软件测试之 对朋友圈点赞功能进行测试
  18. php 打开ppt,怎么播放ppt
  19. Linux重启后硬盘挂载失效问题解决
  20. 写给成为高手之路上的朋友们

热门文章

  1. 通过poi操作ppt中的图片
  2. 【机器学习】异常检测算法(I)
  3. 031 广播变量与累加器
  4. [UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库
  5. 用AndroidSDK中的Face Detector实现人脸识别
  6. 环境测试明日最后一天 16万次公交车确保市民出行
  7. Ubuntu18.04安装VMware WorkStation
  8. Android N Display Size
  9. python自动登录校园网 密码_python实现校园网自动登录的示例讲解
  10. Java网络爬虫实操(3)