📜  网络将冠状病毒数据抓取到 MS Excel 中(1)

📅  最后修改于: 2023-12-03 15:41:21.009000             🧑  作者: Mango

使用Python将冠状病毒数据抓取到MS Excel中

简介

本篇文章将介绍如何使用Python及相关框架,将冠状病毒数据从网络抓取到MS Excel中。本文适合具备Python基础知识及相关编程经验的程序员。

准备

在开始编写代码前,我们需要先准备好必要的工具。本文使用的工具如下:

  • Python3

Python3是本文使用的编程语言,如果你还没有安装,请参考官方文档进行安装:

https://www.python.org/downloads/

  • requests

requests是一个Python第三方库,可用于发送HTTP/1.1请求。requests可以轻松获取网页内容、获取API数据、发送POST请求等。可以使用以下命令进行安装:

pip install requests
  • openpyxl

openpyxl是一个Python第三方库,可用于处理Excel文件。可以使用以下命令进行安装:

pip install openpyxl
步骤
1. 获取数据

我们可以从多个数据源获取冠状病毒的数据,本文以丁香园为例。丁香园可以提供最新的冠状病毒数据,数据接口地址如下:

https://service-f9fjwngp-1252021671.bj.apigw.tencentcs.com/release/dingxiangyuan

我们可以使用requests发送HTTP请求获取数据:

import requests
import json

url = 'https://service-f9fjwngp-1252021671.bj.apigw.tencentcs.com/release/dingxiangyuan'

data = requests.get(url).text

jsonData = json.loads(data)
2. 解析数据

我们成功获取到数据后,需要对数据进行解析,将其转换成可以存入Excel文件中的格式。

as of: 2022-05-31 15:44:40

import requests
import json

url = 'https://service-f9fjwngp-1252021671.bj.apigw.tencentcs.com/release/dingxiangyuan'

data = requests.get(url).text

jsonData = json.loads(data)

# 定义一个空的二维列表用于存储数据
rows = []

# 循环遍历jsonData中的数据
for item in jsonData['data']['listByCountryType']:
    # 将每个国家的数据存入二维列表中
    row = [
        item['provinceName'],
        item['countryShortCode'],
        item['confirmedCount'],
        item['curedCount'],
        item['deadCount']
    ]
    rows.append(row)
3. 存储数据

我们已经将数据解析出来并存入二维列表中,现在需要将数据存入Excel文件中。在存储Excel文件前,我们需要先创建一个Workbook对象并添加一个Worksheet对象:

import openpyxl
from openpyxl.utils import get_column_letter

# 创建一个Workbook对象
workbook = openpyxl.Workbook()

# 添加一个Worksheet
worksheet = workbook.active

# 设置Worksheet的标题行
headers = ['省份', '国家/地区', '确诊', '治愈', '死亡']
for col_num, header in enumerate(headers, 1):
    col_letter = get_column_letter(col_num)
    worksheet[f'{col_letter}1'] = header

接着,我们可以将二维列表中的数据写入Worksheet对象中:

import openpyxl
from openpyxl.utils import get_column_letter

workbook = openpyxl.Workbook()
worksheet = workbook.active

# 设置标题行
headers = ['省份', '国家/地区', '确诊', '治愈', '死亡']
for col_num, header in enumerate(headers, 1):
    col_letter = get_column_letter(col_num)
    worksheet[f'{col_letter}1'] = header

# 将数据写入Worksheet中
for row_num, row in enumerate(rows, 2):
    worksheet.append(row)

最后,我们需要将Workbook对象保存成Excel文件:

workbook.save('data.xlsx')

至此,我们已经将冠状病毒数据从网络抓取到了MS Excel中。完整代码如下:

import requests
import json

import openpyxl
from openpyxl.utils import get_column_letter

url = 'https://service-f9fjwngp-1252021671.bj.apigw.tencentcs.com/release/dingxiangyuan'

data = requests.get(url).text

jsonData = json.loads(data)

# 定义一个二维列表用于存储数据
rows = []

# 循环遍历jsonData中的数据
for item in jsonData['data']['listByCountryType']:
    row = [
        item['provinceName'],
        item['countryShortCode'],
        item['confirmedCount'],
        item['curedCount'],
        item['deadCount']
    ]
    rows.append(row)

# 创建一个Workbook对象
workbook = openpyxl.Workbook()

# 添加一个Worksheet
worksheet = workbook.active

# 设置Worksheet的标题行
headers = ['省份', '国家/地区', '确诊', '治愈', '死亡']
for col_num, header in enumerate(headers, 1):
    col_letter = get_column_letter(col_num)
    worksheet[f'{col_letter}1'] = header

# 将数据写入Worksheet中
for row_num, row in enumerate(rows, 2):
    worksheet.append(row)

# 保存Excel文件
workbook.save('data.xlsx')