[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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章