今天我们来学习对爬取到的数据进行存储。
三种方式:1.json,2.csv,3.excel文件存储
一.json
1.支持数据格式
a.对象(字典) 使用 {}
b.数组(列表)使用 []
c.整形,浮点型,null,布尔类型
d.字符串类型(必须使用双引号)
注意:本质就是字符串
‘’‘
pyth
二.CSV
csv泛指具有以下特征的任何文件:
1.纯文本,使用某个字符串(ASCII)等;
2.由记录组成。(每行一条记录)
3.每条记录被分隔成字段
4.每条记录都有同样的字段序列。
import json
import csv
'''
pythons=[{'username':'小皮','age':'1','city':'zhen'},{'username':'皮','age':'18','city':'zhe8n'},{'username':'小','age':'71','city':'zhgen'},]
json_str=json.dumps(pythons,ensure_ascii=False)#dumps函数将其转换成字符串
#print(type(json_str))
#print(json_str)
#dump直接写入,示例如下:
with open("1st.json","w",encoding='utf-8')as fp:
#json.dump(pythons,fp,ensure_ascii=False)#ensure_ascii=False可以进行不编码写入,默认是true
fp.write(json_str)#两者等价
#dump,dumps只有基本数据类型才能转换,元组,列表,字典等。
#写入csv文件的两种方式
def write_csv_demo1():
headers = ['username', 'agr', 'city']
value = [
{'sd', '23', 'sz'},
{'sadc', '234', 'b申j'},
{'sdfg', '234', 'sh'}
]
with open('cadf.csv', 'w', encoding='utf-8', newline='')as fp:
writer = csv.writer(fp)
writer.writerow(headers)
writer.writerows(value)
def write_csv_demo2():
headers = ['username', 'agr', 'city']
value = [{'username':"ads是", 'agr':"22", 'city':"wdcs"},{'username':"ad", 'agr':'33', 'city':"wdfdcs"},{'username':"adsafsd", 'agr':"12", 'city':"cs"}
]
with open('cad1.csv', 'w', encoding='utf-8', newline='')as fp:
writer=csv.DictWriter(fp,headers)
#写入表头时需要调用writeheader方法
writer.writeheader()
writer.writerows(value)
if __name__ == '__main__':
write_csv_demo2()
'''
#读取csv文件的两种方式
def read_csv_demo1():
with open('cadf.csv','r')as fp:
reader=csv.reader(fp)
#reader是个迭代器
for x in reader:
name=x[1]
city=x[-1]
print(name,city)
def read_csv_demo2():
with open('cadf.csv','r')as fp:
#使用DictReader创建的reader,不含标题行的数据
#reader是一个迭代器,遍历后是个字典
reader=csv.DictReader(fp)
for x in reader:
value=x["city"]
print(value)
print(x)
if __name__ == '__main__':
read_csv_demo2()