Python 获取全球冠状病毒的确诊、康复、死亡病例

Python 获取全球冠状病毒的确诊、康复、死亡病例

冠状病毒大流行对世界各地的数十亿人生活造成了影响。这次大流行引发了人们的广泛关注。为了确定和获取关于总死亡人数、康复病例、确诊病例等准确信息,开发了多个应用程序。在开发与大流行相关的应用程序时,获取和分析这些信息对开发人员很重要。本文将介绍如何获取COVID-19病例的统计数据。

使用APIs

API(应用程序编程接口)在现代编程和软件开发中非常重要。它使软件应用程序能够相互交互。它定义了其他应用程序可以使用的一组协议,以与软件应用程序进行交互、交换数据、功能等。API可以采用各种形式,例如Web API、库API、操作系统API或硬件API。基于HTTP的Web API通常是最常见的。它们使开发人员能够通过对特定端点进行HTTP请求来访问数据和服务。

对于我们接下来的示例,我们将使用以下API: https://disease.sh/v3/covid-19/all

示例

在以下代码中,我们首先导入了所有必要的模块。接下来构建了fetch_data函数,我们使用该函数使用API获取数据的JSON格式。process_data函数将从获取的数据中返回一个数据帧。analyze_cases通过预处理数据帧返回确诊、康复和死亡病例。接下来,我们创建了visualize_data函数,用于绘制数据的条形图。我们使用matplotlib来绘制条形图。我们使用了一个主函数作为我们的驱动代码。

import requests
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def fetch_data(url):
    response = requests.get(url)
    data = response.json()
    return data
def process_data(data):
    df = pd.DataFrame(data, index=[0])
    return df
def analyze_cases(df):
    confirmed_cases = df['cases'].iloc[0]
    recovered_cases = df['recovered'].iloc[0]
    death_cases = df['deaths'].iloc[0]
    return confirmed_cases, recovered_cases, death_cases
def visualize_data(confirmed_cases, recovered_cases, death_cases):
    labels = ['Confirmed', 'Recovered', 'Deaths']
    values = [confirmed_cases, recovered_cases, death_cases]
    plt.figure(figsize=(8, 6))
    sns.barplot(x=labels, y=values)
    plt.xlabel("Cases")
    plt.ylabel("Count")
    plt.title("Global COVID-19 Cases")
    plt.show()
def main():
    url = "https://disease.sh/v3/covid-19/all"  
    data = fetch_data(url)
    df = process_data(data)
    confirmed_cases, recovered_cases, death_cases = analyze_cases(df)
    print("Global COVID-19 Cases:")
    print("Confirmed cases:", confirmed_cases)
    print("Recovered cases:", recovered_cases)
    print("Death cases:", death_cases)
    visualize_data(confirmed_cases, recovered_cases, death_cases)
if __name__=='__main__':
    main()

输出

Global COVID-19 Cases:
Confirmed cases: 690148376
Recovered cases: 662646473
Death cases: 6890206

Python 获取全球冠状病毒的确诊、康复、死亡病例

使用Beautifulsoup进行Web Scrapping

BeautifulSoup是Python中常用的用于Web Scrapping的库。Web Scrapping是从网页中提取有意义数据的过程。该库帮助解析HTML和XML格式的文档。它提供了一个强大且方便的方法来搜索和过滤解析文档中的元素。对于我们的用例,我们可以首先使用Python的requests库获取数据,然后使用BeautifulSoup库提取文本。

Python中的requests库帮助与Web服务进行交互并处理HTTP请求。该库提供了一种用户友好的方式来发送请求并处理响应。使用requests库,开发者可以轻松发送各种HTTP请求,如GET、POST、PUT、DELETE等。它支持不同类型的数据载荷,包括URL编码的表单数据、JSON和文件上传,使其对不同的Web交互非常灵活。

示例

在下面的代码中,我们首先导入了request、BeautifulSoup、seaborn等库。我们创建了fetch_data函数,使用requests库获取数据并返回HTML解析后的内容。extract_case函数利用BeautifulSoup方法提取所需信息。visualize_data函数使用matplotlib库绘制了柱状图,将确诊病例、康复病例和死亡病例作为参数。我们创建了主函数,它是程序的驱动代码。

import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
import seaborn as sns
def fetch_data(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')
    return soup
def extract_cases(soup):
    confirmed_cases = int(soup.find('div', class_='maincounter-number').span.text.replace(',', ''))
    recovered_cases = int(soup.find_all('div', class_='maincounter-number')[2].span.text.replace(',', ''))
    death_cases = int(soup.find_all('div', class_='maincounter-number')[1].span.text.replace(',', ''))
    return confirmed_cases, recovered_cases, death_cases
def visualize_data(confirmed_cases, recovered_cases, death_cases):
    labels = ['Confirmed', 'Recovered', 'Deaths']
    values = [confirmed_cases, recovered_cases, death_cases]
    plt.figure(figsize=(8, 6))
    sns.barplot(x=labels, y=values)
    plt.xlabel("Cases")
    plt.ylabel("Count")
    plt.title("Global COVID-19 Cases")
    plt.show()
def main():
    url = "https://www.worldometers.info/coronavirus/" 
    soup = fetch_data(url)
    confirmed_cases, recovered_cases, death_cases = extract_cases(soup)
    print("Global COVID-19 Cases:")
    print("Confirmed cases:", confirmed_cases)
    print("Recovered cases:", recovered_cases)
    print("Death cases:", death_cases)
    visualize_data(confirmed_cases, recovered_cases, death_cases)
if __name__=='__main__':
    main()

输出

Global COVID-19 Cases:
Confirmed cases: 690148376
Recovered cases: 662646473
Death cases: 6890206

Python 获取全球冠状病毒的确诊、康复、死亡病例

使用Selenium库进行网页抓取

Selenium是一个强大的Python库,用于自动化浏览器操作。它允许程序员通过程序控制浏览器,从而帮助他们自动化任务。Selenium支持包括Chrome、Firefox、Safari和Microsoft Edge在内的各种浏览器。它通过与浏览器交互的WebDriver来桥接Selenium库和浏览器。我们可以使用Selenium来自动获取网页内容,以满足我们的特定需求。

示例

在下面的示例中,我们首先导入了必要的模块和库,如webdriver、BeautifulSoup等。接下来,我们使用webdriver方法创建了driver对象。我们使用requests库获取URL的响应。get_html函数返回HTML内容。extract_cases函数是一个用户定义的函数,从已解析的HTML文本中提取数据。接下来,我们创建了visualize_data函数,它从数据中绘制了一个条形图。main函数包含了我们的主要代码。

from selenium import webdriver
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
import seaborn as sns

def get_html(url):
    driver = webdriver.Chrome()
    driver.get(url)
    html = driver.page_source
    driver.quit()
    return html

def extract_cases(soup):
    confirmed_cases = int(soup.find('div', class_='maincounter-number').span.text.replace(',', ''))
    recovered_cases = int(soup.find_all('div', class_='maincounter-number')[2].span.text.replace(',', ''))
    death_cases = int(soup.find_all('div', class_='maincounter-number')[1].span.text.replace(',', ''))
    return confirmed_cases, recovered_cases, death_cases

def visualize_data(confirmed_cases, recovered_cases, death_cases):
    labels = ['Confirmed', 'Recovered', 'Deaths']
    values = [confirmed_cases, recovered_cases, death_cases]
    plt.figure(figsize=(8, 6))
    sns.barplot(x=labels, y=values)
    plt.xlabel("Cases")
    plt.ylabel("Count")
    plt.title("Global COVID-19 Cases")
    plt.show()

def main():
    url = "https://www.worldometers.info/coronavirus/"
    html = get_html(url)
    soup = BeautifulSoup(html, 'html.parser')
    confirmed_cases, recovered_cases, death_cases = extract_cases(soup)

    print("Global COVID-19 Cases:")
    print("Confirmed cases:", confirmed_cases)
    print("Recovered cases:", recovered_cases)
    print("Death cases:", death_cases)

    visualize_data(confirmed_cases, recovered_cases, death_cases)

if __name__ == '__main__':
    main()

输出

Global COVID-19 Cases:
Confirmed cases: 690148376
Recovered cases: 662646473
Death cases: 6890206

Python 获取全球冠状病毒的确诊、康复、死亡病例

结论

在本文中,我们了解了如何获取关于COVID-19的统计数据。我们既分析了数据,也可视化了数据。Python是一种通用脚本语言,提供了处理网络抓取和API的各种方式。因此,我们有多种选项,比如API,网络抓取等来获取相关数据。我们首先使用第三方应用程序提供的API来获得相关数据。接下来,我们使用了网络抓取的概念从网页中提取所需数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程