scrapy框架中保存数据的三种格式

在scrapy框架中保存数据是在pipeline.py中保存
切记需要注意在settings里面设置pipleines的权重值

TEM_PIPELINES = {
   'tieba.pipelines.TiebaPipeline': 300,
}

1.保存数据为文本格式

# 获取当前工作目录
class JsonPipeline(object):
    def process_item(self,item,spider):
        base_dir = os.getcwd()
        file_name = base_dir + '/test.txt'
        # 以追加的方式打开并写入文件
        with open (file_name,"a") as f:
            f.write(item + '\n') # \n代表换行符
        return item

2.保存数据为json格式

class JsonPipeline(self,item,spider):
    base_dir = os.getcwd()
    file_name = base_dir + '/test.json'
    # 把字典类型的数据转换成json格式,并写入
    with open(file_name,"a") as f:
        line = json.dumps(dict(item),ensure_ascii=False,indent=4)
        f.write(line)
        f.write("\n")
    return item
这里需要解释下json.dumps()里面的几个参数:
item:提取的数据,数据要转换为json格式
ensure_ascii:要设置为false,不然数据会直接以utf-8的方式存入
indent:格式化输出,增加可阅读性

请参考我的这篇博客:json数据转换

https://blog.csdn.net/Spider_xiaoma/article/details/81840604

3.以 excel表格的形式存储

以后进入公司可能需要对爬取的数据进行数据整理,这个就比较方便了.
一般情况下,爬虫爬取的都是结构化数据,我们一般会用字典来表示.
在CSV库中也提供了字典的写入方式
import CSV

with open('data.csv','w') as f:
    fieldnames = ['id','name','age'] # 定义字段的名称
    writer = CSV.DictWriter(f,fieldnames=fieldnames) # 初始化一个字典对象
    write.writeheader() # 调用writeheader()方法写入头信息
    # 传入相应的字典数据
    write.writerow({'id':'1001','name':'Mike','age':18})
    write.writerow({'id':'1002','name':'Mike1','age':19})
    write.writerow({'id':'1003','name':'Mike2','age':20})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

坚持,坚持,再坚持

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

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

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

打赏作者

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

抵扣说明:

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

余额充值