欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-08 17:06:17
...

在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})

相关标签: scrapy 数据格式