1. 准备数据以便保存
在之前的讲座中,我们已经学会了使用 BeautifulSoup 从网页中提取数据。现在是时候把我们的爬取成果变成一些对分析来说有用且方便的东西啦。毕竟,如果数据只留在你的脚本里,是没啥用的。今天我们学习如何以 CSV 和 Excel 格式保存数据,毕竟程序员的生活,就像猫的生活,最重要的就是找到吃的...我是说,保存数据。
在我们开始把数据转成有趣的表格之前,让我们先停一下,看看如何准备我们的数据用于导出。通常我们从网页中提取的数据是以列表或字典的形式存在的。最好将它们格式化,以便它们可以导出成表格格式。
数据示例
假设你已经收集了以下关于书籍的数据:
books = [
{"title": "哈利·波特与魔法石", "author": "J.K. 罗琳", "price": "350.00"},
{"title": "指环王", "author": "J.R.R. 托尔金", "price": "500.00"},
{"title": "大师与玛格丽特", "author": "M.A. 布尔加科夫", "price": "450.00"}
]
2. 保存为 CSV 格式
CSV(逗号分隔值)是一种简单的文本格式,用于存储表格数据。CSV 中的每一行代表一个记录,每一列用逗号分隔。让我们学会如何以这种格式保存数据。
使用 csv 库
Python 为我们提供了一个方便的 csv 模块,它可以大大简化与 CSV 文件的操作。以下是如何将我们关于书籍的数据导出为 CSV:
import csv
with open('books.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=["title", "author", "price"])
writer.writeheader()
writer.writerows(books)
print("数据已成功保存到 books.csv")
注意: 在以 w 模式打开文件时,始终指定 newline='',以避免在 Windows 中出现额外的空行。
从 CSV 中读取数据
为了完整起见,让我们看看如何从 CSV 中读取数据:
with open('books.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
3. 保存为 Excel 格式
在 Python 中操作 Excel,我们将使用 pandas 库。Pandas 让我们可以轻松地将数据转换为 DataFrame 并导出为各种格式,包括 Excel。
安装 pandas
如果你还没有安装 pandas,可以用 pip 来安装:
pip install pandas openpyxl
使用 pandas 导出为 Excel
现在,让我们将关于书籍的数据保存到 Excel:
import pandas as pd
df = pd.DataFrame(books)
df.to_excel('books.xlsx', index=False, engine='openpyxl')
print("数据已成功保存到 books.xlsx")
从 Excel 中读取数据
不只是创建表格,能再次使用我们创建的数据也是一种乐趣!让我们学习如何从 Excel 中读取数据:
df = pd.read_excel('books.xlsx')
print(df)
4. 错误及其处理
就像编程中的其他方面一样,在导出数据时也可能会遇到错误。最常见的错误与文件路径错误或缺少必要库相关。例如,如果忘记安装 openpyxl,就无法导出为 Excel。
检查文件是否存在
在尝试写入或读取文件之前,检查文件是否存在是很有用的。这可以通过 os 模块完成:
import os
if os.path.exists('books.csv'):
print("文件 books.csv 存在")
else:
print("文件 books.csv 未找到")
你可能不信,但新手们犯的最常见错误是意外用新数据覆盖旧数据。自动化保存文件历史是一种艺术。
另外,不要忘记使用 try-except 结构来处理错误,这样你的脚本就不会因为第一个问题而崩溃。
GO TO FULL VERSION