基于scrapy框架存储爬虫数据的四种方法(自定义json文件、json export方法、同步存储数据库、异步存储数据库)

最近在学习scrapy爬虫框架,感受到了它的强大之处,在接触各种数据存储方法后,希望进行一个简单的总结。总的来说,爬虫常用的数据存储方法,无非就是保存在本地的json格式化文件或者是数据库中,但在学习的过程中,了解了每种场景中不一样的用法,分别是:自定义json文件json export方法同步存储数据库异步存储数据库四种方法。下面就结合代码简要进行一个介绍。

说到数据的存储,了解scrapy的人都知道,这些操作是在项目子目录下的piplines.py配置 :

爬虫本身具体的配置是在scrapy的spiders目录下进行,同时按照相应字段对items.py设置,这里对爬虫本身的代码不多介绍,仅仅以一个文章爬取网站为例,对piplines.py这个数据存储设置文件进行总结。

 

一、自定义的json文件存储 


 当数据量没有那么大的时候,或者,只是临时性质的爬虫操作,为了快速获取数据,将数据存储到json的格式化文件中是比较好的选择,第一种方式是使用自定义的文件操作进行设置:

我们这里使用的是codecs模块做文件操作。

import codecs # 文件打开和存储
import json

class JsonWithEncodingPipeline(object):
    # 自定义json文件的导出
    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()

 JsonWithEncodingPipeline这个类对文件的操作流程还是“打开”,“处理”,“关闭”,我们将item传进来的数据,进行dict转换,通过json.dumps转化为json格式,值得注意的是,在使用json.dumps时,要规定ensure_as

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlexGeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值