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})
上一篇: Javaweb 多文件上传
下一篇: JavaWeb实现文件上传