[python爬虫之路y10]:爬虫之数据存储json,csv,excel

今天我们来学习对爬取到的数据进行存储。
三种方式: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()
发布了12 篇原创文章 · 获赞 3 · 访问量 2216

猜你喜欢

转载自blog.csdn.net/dinnersize/article/details/104458100