scrapy的使用-Pipelines

#------------------简单的对item操作方式----------------------------#
import json
class QsbkPipeline(object):
    def __init__(self):
        self.fp=open('qsbk1.json','w',encoding="utf-8")
    def open_spider(self,spider):
        print('爬虫开始。。。。。')
    def process_item(self, item, spider):
        # item_json=json.dumps(dict(item),ensure_ascii=False)
        # self.fp.write(item_json+'\n')

        return item
    def close_spider(self,spider):

        self.fp.close()
        print('爬虫结束。。。。。')


#------------------对item操作的一种方式(高级方式推荐方式之一)----------------------------#
from scrapy.exporters import JsonItemExporter #以二进制写入,全部完成后写入(列表形式)
class QsbkPipeline(object):
    def __init__(self):
        self.fp=open('qsbk1.json','wb')
        self.exporter = JsonItemExporter(self.fp,ensure_ascii=False,encoding='utf-8')
        self.exporter.start_exporting()
    def open_spider(self,spider):
        print('爬虫开始。。。。。')
    def process_item(self, item, spider):
        self.exporter.export_item(item) #二进制写入开始
        return item
    def close_spider(self,spider):
        self.exporter.finish_exporting() #二进制写入关闭

        self.fp.close()
        print('爬虫结束。。。。。')

#-----------------------另一种对item操作方式(高级方式推荐方式之一,强烈推介)----------------------#
from scrapy.exporters import JsonLinesItemExporter #以二进制写入,完成一个就写#入一个
class QsbkPipeline(object):
    def __init__(self):
        self.fp=open('qsbk2.json','wb')
        self.exporter = JsonLinesItemExporter(self.fp,ensure_ascii=False,encoding='utf-8')
        self.exporter.start_exporting()
    def open_spider(self,spider):
        print('爬虫开始。。。。。')
    def process_item(self, item, spider):
        self.exporter.export_item(item) #二进制写入开始
        return item
    def close_spider(self,spider):
        self.fp.close()
        print('爬虫结束。。。。。')




#注释:
#四个函数分别为 1.初始化爬虫函数(初始化前需要的功能所执行函数)
#             2.开启爬虫函数(爬虫开始函数所执行功能)
#             3.爬虫进行中执行的函数(进行中函数所执行的功能,将数据清理,去重等#写在这里)
#             4.关闭爬虫执行的函数(关闭爬虫函数所执行功能)

猜你喜欢

转载自www.cnblogs.com/superSmall/p/12057289.html
今日推荐