scrapy爬虫框架(三)
使用导出器来优化存储方式
使用JsonItemExporter模块
pipelines.py
from scrapy.exporters import JsonItemExporter
class QsbkspiderPipeline(object):
def __init__(self): # 初始化方法
# 使用二进制来写入,因此“w”-->"wb"
self.fp = open("duanzi2.json", "wb")
self.exporter = JsonItemExporter(self.fp, ensure_ascii=False, encoding='utf-8')
self.exporter.start_exporting()
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
def open_spider(self, spider):
print("爬虫开始了!")
def close_spider(self, spider):
self.exporter.finish_exporting()
self.fp.close()
print("爬虫结束了!")
使用JsonLinesItemExporter模块
区别就在json文件中,同时这种写法语法更少;
from scrapy.exporters import JsonLinesItemExporter
class QsbkspiderPipeline(object):
def __init__(self): # 初始化方法
# 使用二进制来写入,因此“w”-->"wb"
self.fp = open("duanzi3.json", "wb")
self.exporter = JsonLinesItemExporter(self.fp, ensure_ascii=False, encoding='utf-8')
# self.exporter.start_exporting()
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
def open_spider(self, spider):
print("爬虫开始了!")
def close_spider(self, spider):
# self.exporter.finish_exporting()
self.fp.close()
print("爬虫结束了!")