转换为json
1. 第一种方式——命令行
scrapy crawl dmoz -o items.json
该命令将采用 JSON 格式对爬取的数据进行序列化,生成
items.json
文件。,如果文件内出现乱码可以在后面添加FEED_EXPORT_ENCODING = 'utf-8'进行转换
2. 在pipelines.py里面编辑函数
只是简单介绍一下操作,所以拿之前写的一个练手的scrapy代码做演示,spider文件已经成型,现在主要是在pipelines里面编辑代码做存储用,存入poker_test.json文件
class Poker2Pipeline(object):
def __init__(self):
self.file = codecs.open('poker_test.json', 'w', encoding='utf-8')
def process_item(self, item, spider):
line = json.dumps(dict(item), ensure_ascii=False) + "\n"
self.file.write(line)
return item
def spider_closed(self, spider):
self.file.close()
poker_test.json
3. 与上面的方法异曲同工,只是换了一种思路
在写入文件时要格外注意编码的问题,这里存入poker_test2.json文件,话不多说,上代码
def process_item(self, item, spider):
base_dir = os.getcwd()
filename = base_dir + '/poker_test2.json'
# 打开json文件,向里面以dumps的方式吸入数据
# 注意需要有一个参数ensure_ascii=False ,不然数据会直接为utf编码的方式存入比如
# :“/xe15”
with codecs.open(filename, 'a', encoding='utf-8') as f:
line = json.dumps(dict(item), ensure_ascii=False) + '\n'
f.write(line)
return item
poker_test2
存入txt文件
这里演示存入poker.txt文件,数据什么的不要在意,主要是方法方法
def process_item(self, item, spider):
base_dir = os.getcwd()
fiename = base_dir + '/poker.txt'
with open(fiename, 'a') as f:
f.write(item['title'] + '\n')
f.write(item['description'] + '\n')
# f.write(item['other'] + '\n')
return item