Python-爬蟲-(Json和Csv)文件存儲


用解析器解析出的數據后,可以通過TXT、JSON、CSV等文件形式進行存儲;

1、TXT形式此處略;

2、JSON文件存儲

json即js 對象標記,是一種數據格式;

json格式:

json對象:{"username":"ADMIN","pwd":"xxxx","address":"北京"}

json數組:[{"name":"smith","age":"23"},{"name":"jones","age":"23"},{"name":"zye","age":"23"}]

 

例如:

 1 import json
 2 str='''
 3 [{"name":"小明","age":"23"},{"name":"jones","age":"23"},{"name":"zye","age":"23"}]
 4 '''
 5 print(type(str))
 6 obj=json.loads(str)#將json格式字符串轉為json
 7 print(type(obj))
 8 #取值
 9 print(obj[0]['name'])
10 print(obj[1]['age'])
11 print(obj[1].get('name'))
12 print(obj[1].get('address','北京'))#即如果該字段為None或者該key不存在時,會采用默認值;即第二個參數為默認值
13 
14 #加載一個json文件
15 with open("read.json",'r') as file:
16     s=file.read()
17     j=json.loads(s)
18     print(j[0]['name'])
19 
20 #輸出json
21 jsonArray=[{'name':'sd'},{'name':'ss'}]
22 with open('test.json','w') as  file:
23     file.write(json.dumps(jsonArray))
24 
25 #或者:
26 jsonObj=json.loads(str)
27 with open('test.json','w') as file:
28     file.write(json.dumps(jsonObj))
29 
30 #或者:如果有中文,且想格式化
31 jsonObj=json.loads(str)
32 with open('test.json','w',encoding='utf-8') as file:
33     file.write(json.dumps(jsonObj,indent=2,ensure_ascii=False))#格式化了json,

寫入test.json后格式:

[
{
"name": "小明",
"age": "23"
},
{
"name": "jones",
"age": "23"
},
{
"name": "zye",
"age": "23"
}
]

 2、CSV文件操作

CSV通過分隔符進行風格以純文本形式存儲表格數據;該文件是一個字符序列,可以任意數目組成的記錄,記錄之間通過換行符分離;

將數據寫入csv文件

 1 import csv
 2 with open ('data .csv',  'w',newline='') as csvfile:# newline=''設置換行,否則會出現空行
 3      writer = csv.writer(csvfile,delimiter=':')#delimiter=':' 設置:號隔開
 4      writer.writerow (['id', 'ame','age'])
 5      writer. writerow( ['10001', 'Mike',20])
 6      writer .writerow (['10002','Bob',22])
 7 
 8      writer.writerows([['1003','JEL',23],['1004','JESR',34],['1005','ESR',34]])
 9      csvfile.close()
10 
11 #字典形式寫入
12 with open('abc.csv','w',newline='',encoding='utf-8 ') as myfile:#設置w為a則此時會像文檔中追加內容
13      fieldnames=['id','name','addr']
14      writer=csv.DictWriter(myfile,delimiter='!',fieldnames=fieldnames)
15      writer.writeheader()
16      writer.writerow({'id':'1001','name':'JONES','addr':'北京'})
17      writer.writerow({'id': '1002', 'name': 'smith', 'addr': '北京'})
18      writer.writerow({'id': '1003', 'name': 'jenes', 'addr': '北京'})

讀取csv文件:

1 #讀取數據
2 with open('abc.csv','r',encoding='utf-8') as myfile:
3      csvReader=csv.reader(myfile)
4      for r in csvReader:
5           print(r)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM