美文网首页
scrapy优化json存储

scrapy优化json存储

作者: TheRightPath1 | 来源:发表于2020-06-01 22:57 被阅读0次

1.相关笔记:


QQ截图20200601224814.png

2.示例代码:
(1)JsonItemExporter:

class ScrapyDemoPipeline(object):
    def open_spider(self, spider):
        # 使用JsonItemExporter时文件必须以二进制形式打开
        self.f = open('funs.json', 'wb')
        print('爬虫开始了...', spider)
        # 生成JsonItemExporter对象
        self.json_ex = JsonItemExporter(self.f, encoding='utf-8', ensure_ascii=False)
        # 调用start_exporting()表示准备导入
        self.json_ex.start_exporting()

    def process_item(self, item, spider):
        print('正在进行数据处理...', spider)
        # 调用export_item将要存储的item写入文件
        self.json_ex.export_item(item)
        return item

    def close_spider(self, spider):
        # 调用finish_exporting表示写入完成
        self.json_ex.finish_exporting()
        self.f.close()
        print('爬虫结束了...', spider)

(2)JsonLinesItemExporter:

class ScrapyDemoPipeline(object):
    def open_spider(self, spider):
        # 使用JsonItemExporter时文件必须以二进制形式打开
        self.f = open('funs.json', 'wb')
        print('爬虫开始了...', spider)
        # 生成JsonItemExporter对象
        self.json_ex = JsonLinesItemExporter(self.f, encoding='utf-8', ensure_ascii=False)
        # 使用JsonLinesItemExporter时不需要再调用开始方法
        # self.json_ex.start_exporting()

    def process_item(self, item, spider):
        print('正在进行数据处理...', spider)
        # 调用export_item将要存储的item写入文件
        self.json_ex.export_item(item)
        return item

    def close_spider(self, spider):
        # 使用JsonLinesItemExporter时不需要再调用结束方法
        # self.json_ex.finish_exporting()
        self.f.close()
        print('爬虫结束了...', spider)

相关文章

网友评论

      本文标题:scrapy优化json存储

      本文链接:https://www.haomeiwen.com/subject/mhiezhtx.html