JsonItemExporter和JsonLinesItemExporter保存數據


JsonItemExporter方式保存數據

 1 # -*- coding: utf-8 -*-
 2 from scrapy.exporters import JsonItemExporter
 3 
 4 
 5 class DemoPipeline(object):
 6     def __init__(self):
 7         self.fp = open("duanzi.json", "wb")
 8         self.exporter = JsonItemExporter(self.fp, ensure_ascii=False, encoding='utf-8')
 9         self.exporter.start_exporting()
10 
11     def open_spider(self, spider):
12         pass
13 
14     def process_item(self, item, spider):
15         self.exporter.export_item(item)
16         return item
17 
18     def close_spider(self, spider):
19         self.exporter.finish_exporting()
20         self.fp.close()

或JsonLinesItemExporter保存數據

 1 # -*- coding: utf-8 -*-
 2 from scrapy.exporters import JsonLinesItemExporter
 3 
 4 
 5 class DemoPipeline(object):
 6     def __init__(self):
 7         self.fp = open("duanzi.json", "wb")
 8         self.exporter = JsonLinesItemExporter(self.fp, ensure_ascii=False, encoding='utf-8')
 9 
10     def open_spider(self, spider):
11         pass
12 
13     def process_item(self, item, spider):
14         self.exporter.export_item(item)
15         return item
16 
17     def close_spider(self, spider):
18         self.fp.close()

區別:

JsonItemExporter:每次把數據添加到內存中,最后統一寫入到磁盤文件中。好處是,存儲的是一個滿足json規則的數據。壞處是如果數據量比較大,那么比較耗內存。

JsonLinesItemExporter:每次調用export_item的時候就把這個item存儲到磁盤中.壞處是一個字典一行,整個文件不是一個滿足json格式的文件.好處是每次數據都直接存到磁盤文件中,不會耗內存,數據相對安全.

 


免責聲明!

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



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