Python3监控疫情的完整代码

yizhihongxing

我来为您详细讲解“Python3监控疫情的完整代码”的完整攻略。

简介

在当前新冠疫情面前,尽可能了解疫情动态变化对我们很有帮助。本文将介绍如何使用Python3编写一个简单的疫情数据监控程序,用以实时获取最新疫情数据,分析并可视化数据。我们将使用的数据源是新浪新闻SinaNews的新冠疫情实时追踪

步骤

步骤1 下载相关库

首先,为了能够运行本程序,我们需要安装一些第三方库。在终端中运行以下命令,安装相关库:

pip3 install requests
pip3 install beautifulsoup4
pip3 install pyecharts

上述命令分别安装了三个库:

  • requests:用于发送HTTP请求,获取网页内容。
  • beautifulsoup4:用于解析HTML文档,方便我们从网页中提取数据。
  • pyecharts:一个可视化工具库,用于将获取的数据可视化。

步骤2 获取网页内容

首先,我们需要向疫情实时追踪页面发送HTTP请求,获取页面的内容。我们可以使用requests库实现,具体代码如下:

import requests

url = 'https://news.sina.com.cn/zt_d/yiqing0121/'

def get_html(url):
    headers = {  
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }  
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "爬取失败"

上面的代码中,我们定义了一个名为 get_html() 的函数,函数接收一个参数 url,返回一个字符串类型的变量,表示获取的网页HTML内容。其中,我们设置了请求的headers信息,以模拟浏览器发送请求。

使用以上函数获取到页面的HTML内容后,在处理数据之前,我们使用BeautifulSoup库将其转化为树形结构,方便接下来的数据处理。

from bs4 import BeautifulSoup

html = get_html(url)
soup = BeautifulSoup(html, 'html.parser')

步骤3 解析网页内容,提取数据

现在我们已经获取了网页的HTML内容,并将其转化为了解析树,接下来就需要从中提取我们需要的数据了。

我们可以打开新浪新闻疫情实时追踪页面,使用Chrome浏览器的开发者工具(F12)来确定我们需要的数据所在标签。经过查看,我们可以找到我们所需要的信息都在名为“data”的script标签的内容中。

import re

data_tag = soup.find_all('script', attrs={'id': 'data'})
data_str = str(javascript_tag[0])

# 使用正则表达式提取“data”变量的内容
data = re.search(r'\[.*\]', data_str).group()

在上面的代码中,我们使用正则表达式从script标签中提取名为data的变量内容,存储到data变量中,data变量是一个json格式的字符串。

接下来,我们使用json库将数据转化为Python的字典类型,这样就方便我们进行数据处理和可视化了。

import json

data = json.loads(data)

通过以上步骤,我们已经成功地从页面上抓取了我们所需要的疫情数据,并且转化为了Python字典的数据类型。

步骤4 数据处理和可视化

我们的数据取回来了,接下来就是处理和可视化。这里我们使用pyecharts库来进行数据可视化。先看一下下面的代码:

from pyecharts.charts import Map

province_data = {}
for item in data['listByArea']:
    province = item['name']
    confirm = item['value']
    province_data[province] = confirm

map = Map(title='全国疫情地图', width=1200, height=600)
map.add('累计确诊人数', list(province_data.items()), 'china')
map.render()

这里我们使用Map图来展示全国各省/市的疫情情况。这段代码中,我们从字典中提取每个省份的确诊人数,然后使用Map.add()方法向地图中添加数据。

运行程序,我们可以得到一个以地图为背景的可视化数据图表。

我们再来看一下另一个以柱状图为背景的数据可视化,如下代码所示:

from pyecharts.charts import Bar

city_data = {}
for province in province_data:
    city_list = []
    if province == '中国':
        continue
    for item in data['listByArea']:
        if item['name'] == province:
            for city in item['city']:
                city_list.append(city['name'])
                city_list.append(city['confirm'])
                break
    city_data[province] = city_list

bar = Bar(title="全国疫情数据柱状图", width=1200)
for key in city_data:
    province_city = []
    province_confirm = []
    for i in range(0, len(city_data[key]), 2):
        province_city.append(city_data[key][i])
        province_confirm.append(city_data[key][i+1])
    bar.add(key, province_city, province_confirm)
bar.render()

这里我们使用了Bar图来展示全国各个省市的疫情情况。我们可以看到,我们成功地创建了一个以柱状图为背景的,一目了然的全国疫情数据地图。

总结

至此,我们已经完成了对Python3监控疫情的完整代码的攻略。通过以上步骤,我们成功地获取并解析了页面内容,提取出想要的数据,并使用pyecharts库实现了数据的可视化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3监控疫情的完整代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • Python五种下划线详解

    下面是关于Python五种下划线的详细讲解及示例说明。 一、概述 在Python中,下划线(_)有五种不同的使用方式,它们分别是: 单个下划线:命名约定,表示弱内部使用,不会呈现在from module import * 单个前置下划线:命名约定,表示为非导出属性或方法 单个后置下划线:用于避免与Python关键字名称的冲突 双前置下划线:名称修饰,用于使属…

    python 2023年5月18日
    00
  • Python PSO算法处理TSP问题详解

    以下是关于“Python PSO算法处理TSP问题详解”的完整攻略: 简介 TSP问题(Traveling Salesman Problem)是一种经典的组合优化问题,它的目标是在给定的一组城市和它们之间的距离矩阵中,找到一条最短的路径,使得每个城市恰好被访问一次,最后回到起点。在教程中,我们将介绍如何使用Python实现PSO算法来解决TSP问题,并使用可…

    python 2023年5月14日
    00
  • 如何在网站上找到mp3文件的隐藏链接| Python

    【问题标题】:How to find the hidden link of mp3 files on the website | Python如何在网站上找到mp3文件的隐藏链接| Python 【发布时间】:2023-04-03 12:55:01 【问题描述】: 如何在radiojavan.com网站上通过Python找到mp3文件的隐藏链接 For ex…

    Python开发 2023年4月8日
    00
  • python3 requests 各种发送方式详解

    以下是关于Python3 requests各种发送方式详解的攻略: Python3 requests各种发送方式详解 requests是Python中一个流行的HTTP库,可以用于向Web服务器发送HTTP请求和接收响应。以下是Python3 requests各种发送方式详解: 发送GET请求 以下是使用requests发送GET请求的示例: import …

    python 2023年5月14日
    00
  • Python教程之基本运算符的使用(上)

    当然,我很乐意为您提供详细的Python基本运算符攻略。 标题 作为一个好的文章,我们首先需要添加几个标题,以便读者能够更好地理解和找到自己感兴趣的部分: 一、Python教程之基本运算符的使用(上) 1.1 算术运算符 1.2 比较运算符 1.3 赋值运算符 1.4 逻辑运算符 1.5 位运算符 1.6 成员运算符 1.7 身份运算符 正文 现在我们进入正…

    python 2023年5月30日
    00
  • python实现excel转置问题详解

    当我们需要将 Excel 表中的数据变换一下,使得表格行和列的位置对调,那么就需要用到数据转置(Transpose)的功能。 Python 作为一门强大的编程语言,通过 Pandas 库可以非常方便地实现 Excel 转置功能。下面我们将通过一个完整的实例教程,展示如何使用 Python 实现 Excel 转置功能,并提供两个示例说明。 1. 准备工作 在开…

    python 2023年5月13日
    00
  • Python3正则表达式之:(?(id/name)yes-pattern|no-pattern)条件性匹配

    Python3正则表达式之:(?(id/name)yes-pattern|no-pattern)条件性匹配 在Python正则表达式中,条件性匹配是一种非常有用的技巧,可以根据某些条件来选择不同的匹配模式。本攻略将详细讲解Python正则表达式中条件性匹配的语法和用法,以及如何在实际应用中使用条件性匹配。 条件性匹配语法 Python正则表达式中的条件性匹配…

    python 2023年5月14日
    00
  • python小程序实现刷票功能详解

    Python小程序实现刷票功能详解 如果你正在寻找一些刷票的Python小程序代码,那么你来到了正确的地方。这篇文章将为你提供一系列的示例和说明,让你了解如何通过Python编写一个简单的刷票程序。 步骤1:选择一个要刷的网站 首先,你需要确定一个要进行刷票的网站。在选择网站时,需要注意选择正规的、合法的,不会侵犯他人利益的网站。否则,你会处于违法和不道德的…

    python 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部