一、存储数据的方式
同样是存储数据的文件,“csv”格式文件和Excel文件有什么区别呢?
1. CSV文件
- 我们知道json是特殊的字符串。其实,csv也是一种字符串文件的格式,它组织数据的语法就是在字符串之间加分隔符——行与行之间是加换行符,同列之间是加逗号分隔。
- csv格式文件可以用任意的文本编辑器打开(如记事本),也可以用Excel打开,还可以通过Excel把文件另存为csv格式(因为Excel支持csv格式文件)。
- csv文件里的逗号充当分隔同列字符串的作用。分隔符使得数据的组织方式更有规律,这让更容易让我们提取和查找。
2. EXCEL文件
- 它有专门的文件格式,即xls和xlsx(Excel2003版本的文件格式是xls,Excel2007及之后的版本的文件格式就是xlsx)。
3. CSV文件与EXCEL文件的比较
- 用csv格式存储数据,读写比较方便,易于实现,文件也会比Excel文件小。
- Excel文件本身的功能更为强大,比如能嵌入图像和图表,生成公式等。如何选择就看具体的使用场景了。
二、存储数据的基础知识
存储成csv格式文件和存储成Excel文件,这两种不同的存储方式需要引用的模块也是不同的。操作csv文件我们需要借助csv模块;操作Excel文件则需要借助openpyxl模块。
1. CSV文件的读写
import csv
# 需要写入的数据
score1 = ['math', 95]
score2 = ['english', 90]
# 打开文件,追加a, newline="",可以删掉行与行之间的空格
file= open("score.csv", "a", newline="")
# 设定写入模式
csv_write = csv.writer(file)
# 写入具体内容
csv_write.writerow(score1)
csv_write.writerow(score2)
file.close()
- 代码file= open(“score.csv”, “a”, newline="")事实上就是创建了一个csv文件并打开它,等待写入文件。
- 代码csv_write = csv.writer(file),创建了一个csvwrite对象。
- 下面两行代码就用该对象的writerow方法写入列表数据。
import csv
# 打开csv文件
file = open("score.csv")
# 读取文件内容,构造csv.reader对象
reader = csv.reader(file)
# 打印reader中的内容
for item in reader:
print(item)
第二行的代码就是打开我们已有的csv文件,然后构造一个csv.reader对象,最后把reader中的内容输出,读取csv的工作也就完成了。
2. EXCEL文件的读写
安装openpyxl库
- Windows系统:pip install openpyxl
Macx系统:pip3 install openpyxl
EXCEL文件的写入
import openpyxl
# 引用openpyxl
wb = openpyxl.Workbook()
# 利用openpyxl.Workbook()函数创建新的workbook(工作薄)对象,就是创建新的空的Excel文件。
sheet = wb.active
# wb.active就是获取这个工作薄的活动表,通常就是第一个工作簿,也就是我们在上面的图片中看到的sheet1。
sheet.title = 'test'
# 可以用.title给工作表重命名。现在第一个工作表的名称就会由原来默认的“sheet1”改为"kaikeba"。
sheet['A1'] = '天下第一'
# 向单个单元格写入数据
score1 = ['math', 95]
sheet.append(score1)
# 写入整行的数据,变量类型是一个列表
wb.save('score.xlsx')
# 保存修改的Excel
wb.close()
# 关闭Excel
示例代码中我们是用到append方法向Excel写入一行内容,要写入多个内容只需添加一个循环即可。
EXCEL文件的读取
import openpyxl
wb = openpyxl.load_workbook('score.xlsx')
# 打开的指定的工作簿
sheet = wb['天下第一']
# 指定读取的工作表的名称
A1_value = sheet['A1'].value
print(A1_value)
# 获取A1的值
三、爬取并存储周杰伦的歌曲信息
import requests
import openpyxl
# 创建workbook对象,建立工作簿
workbook = openpyxl.Workbook()
# 创建工作表
sheet = workbook.active
# 重命名工作表
sheet.title = 'Jac_chou_songs'
# 插入表头
sheet.append(['页码','歌名','歌曲ID','专辑名称','播放时长','播放链接','歌词'