📅  最后修改于: 2023-12-03 15:41:21.009000             🧑  作者: Mango
本篇文章将介绍如何使用Python及相关框架,将冠状病毒数据从网络抓取到MS Excel中。本文适合具备Python基础知识及相关编程经验的程序员。
在开始编写代码前,我们需要先准备好必要的工具。本文使用的工具如下:
Python3是本文使用的编程语言,如果你还没有安装,请参考官方文档进行安装:
https://www.python.org/downloads/
requests是一个Python第三方库,可用于发送HTTP/1.1请求。requests可以轻松获取网页内容、获取API数据、发送POST请求等。可以使用以下命令进行安装:
pip install requests
openpyxl是一个Python第三方库,可用于处理Excel文件。可以使用以下命令进行安装:
pip install openpyxl
我们可以从多个数据源获取冠状病毒的数据,本文以丁香园为例。丁香园可以提供最新的冠状病毒数据,数据接口地址如下:
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)
我们成功获取到数据后,需要对数据进行解析,将其转换成可以存入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)
我们已经将数据解析出来并存入二维列表中,现在需要将数据存入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')