如何將Item儲存成json檔案
阿新 • • 發佈:2018-12-26
現在只是學到這麼寫,為什麼這樣寫還得繼續學習
方法一,在pipelines.py中自定義的自己的json類
然後在settings.py中將其寫入ITEM_PIPELINES函式中class JsonWithEncodingPipeline(object): def __init__(self): self.file = codecs.open('article.json', 'w', encoding="utf-8") def process_item(self, item, spider): lines = json.dumps(dict(item), ensure_ascii=False) + "\n"#確保中文顯示正常 self.file.write(lines) return item def spider_closed(self, spider): self.file.close()
'ArticleSpider.pipelines.JsonWithEncodingPipeline': 2
執行main.py,成功。
另一種是scrapy自帶的將item轉換成各種型別檔案儲存。
發現scrapy中可以將item轉化成上述檔案儲存,例如Csv,Xml.
class JsonExporterPipeline(object): #呼叫scrapy提供的json export 匯出json檔案 def __init__(self): self.file = open('articleexport.json', 'wb') self.exporter = JsonItemExporter(self.file, encoding = "utf-8", ensure_ascii=False) self.exporter.start_exporting() def process_item(self, item, spider): self.exporter.export_item(item) return item def close_spider(self,spider): self.exporter.finish_exporting()
再到setting.py中修改ITEM_PIPELINES
'ArticleSpider.pipelines.JsonExporterPipeline': 2