python爬虫学习38
数据存储片——CSV文件储存
CSV,全称Comma-Separated-Values(逗号分隔值/字符分割值),其文件格式以纯文本格式存储表格数据。
CSV文件是一个字符序列,可以由任意数目的纪录组成,格条记录以某种换行符分隔开。每条记录都由若干字段组成,字段间的分隔符是其他字符或者字符串,最常见的是逗号或者制表符。所有记录都有完全相同的字段序列,相当于一个结构化的纯文本形式。
与Excel的不同之处在于,CSV中不能包含数值、公式、格式等信息,他只是以特定字符为分隔符的纯文本,结构简单清晰。
1. 写入
直接调用csv库进行相关操作:
writerow
import csv
with open('data_csv.csv', 'w+') as file:
writer = csv.writer(file)
writer.writerow(['id', 'name', 'age'])
writer.writerow(['101', 'Bob', '6'])
writer.writerow(['102', 'Jenny', '8'])
writer.writerow(['103', 'Mask', '7'])
print('写入成功!')
运行结果:可以看到当前目录下出现了一个名为data_csv.csv的文件,打开之后内容如下
使用记事本打开该文件:
发现每一条记录由逗号分隔开,可以调用delimiter字段修改分隔字符:
delimiter 分隔符
import csv
with open('data_csv_2.csv', 'w+') as file:
option_csv = csv.writer(file, delimiter=' ')
option_csv.writerow(['id', 'name', 'age'])
option_csv.writerow(['101', 'Bob', '6'])
option_csv.writerow(['102', 'Jenny', '8'])
option_csv.writerow(['103', 'Mask', '7'])
print('写入成功!')
运行结果:
写入的时候也可以使用writerows传入二维数组进行写入:
writerows
import csv
with open('data_csv_3.csv', 'w+') as file:
option = csv.writer(file)
option.writerow(['id', 'name', 'age'])
option.writerows([['101', 'Bob', '6'], ['102', 'Jenny', '8'], ['103', 'Mask', '7']])
print('写入成功!')
运行结果:
在使用爬虫时,我们爬取到的都是结构化数据,一般都会用字典表示这种数据,csv库也提供了字典的写入方法:
Dictwriter 写入字典
import csv
with open('data_csv_4.csv', 'w+') as file:
fieldnames = ['id', 'name', 'age']
option = csv.DictWriter(file, fieldnames=fieldnames)
option.writeheader()
option.writerow({"id": "101", "name": "Bob", "age": "6"})
option.writerow({"id": "102", "name": "Jenny", "age": "8"})
option.writerow({"id": "103", "name": "Mask", "age": "7"})
print('写入成功!')
运行结果:
根据我们已经学过的知识,如何在已有的data_csv_4.csv的基础上追加信息呢?大家可以尝试一下,这里就不再进行演示了。
值得注意的是,若是想在csv格式文件中写入中文内容,就会遇到编码问题,这时我们就需要调用encoding字段:
写入中文的编码问题
import csv
with open('data_csv_5.csv', 'w+', encoding='utf-8') as file:
fieldnames = ['id', 'name', 'age']
option = csv.DictWriter(file, fieldnames=fieldnames)
option.writeheader()
option.writerow({"id": "101", "name": "老王", "age": "6"})
option.writerow({"id": "102", "name": "小李", "age": "8"})
option.writerow({"id": "103", "name": "大强", "age": "7"})
print('写入成功!')
运行结果:
同时,我们也可以与pandas 库产生联动:
pandas 写入
pandas不是py的内置库,需要安装
# 10M 挺大的大家嫌慢可以挂个镜像
pip install pandas
import pandas as pd
data = [
{"id": "101", "name": "老王", "age": "6"},
{"id": "102", "name": "小李", "age": "8"},
{"id": "103", "name": "大强", "age": "7"}
]
dataframe = pd.DataFrame(data)
dataframe.to_csv('data_csv_6.csv', index=False)
print('写入成功!')
运行结果:
未完待续…
|