# 在项目下的pipeline创建一个类:
class JsonWritePipeline(object):
def __init__(self):
# 做写入数据的准备
self.file = codecs.open('article.json', 'w+', encoding='utf-8')
# 先写入一个[
self.file.write('[')
# [{},{},{},{}]
def process_item(self, item, spider):
# 把item转换为json字符串
if isinstance(item, ArticleItem):
# 将item转换字典
item_dict = dict(item)
# 转换为json字符串并追加,逗号
json_str = json.dumps(item_dict)+','
# 写入
self.file.write(json_str)
return item
def close_spider(self, spider):
# seek() 移动文件光标位置
# seek(offset, start)
# os.SEEK_CUR os.SEEK_END os.SEEK_SET
# 将光标移动到文件末尾字符的前面,逗号之前
self.file.seek(-1, os.SEEK_END)
# 将光标之后的字符切除掉
self.file.truncate()
# 写入]
self.file.write(']')
# 关闭文件
self.file.close()