scrapy 数据的插入 json 和mongo的操作 Pipeline篇

class MyspiderPipeline(object):

     def process_item(self, item, spider):
# 获取当前工作目录

        if spider.name == "zfcg":  
            global filename
            base_dir = os.getcwd()
            filename = base_dir + '/news.json'
            # 打开json文件,向里面以dumps的方式吸入数据
            # 注意需要有一个参数ensure_ascii=False ,不然数据会直接为utf编码的方式存入比如
            # :“/xe15”
        with open(filename, 'a',encoding="utf-8") as f:
             line = json.dumps(dict(item), ensure_ascii=False) + '\n'
             f.write(line)
             print("加入成功!")
        return item
class MyspiderPipeline1(object):

     def process_item(self, item, spider):
         
# 获取当前工作目录
      # if isinstance(item,MyspiderItems):
         # print(item)
         # if spider.name == "zfcgy":  
            global filenames
            base_dir = os.getcwd()
            filenames = base_dir + '/news1.json'
            # 打开json文件,向里面以dumps的方式吸入数据
            # 注意需要有一个参数ensure_ascii=False ,不然数据会直接为utf编码的方式存入比如
            # :“/xe15”
            with open(filenames, 'a',encoding="utf-8") as f:
             line = json.dumps(dict(item), ensure_ascii=False) + '\n'
             f.write(line)

            
            return item
class SaveToMongoPipeline(object):    # 将数据保存到mongodb中
    def __init__(self, mongo_url, mongo_db):
        self.mongo_url = mongo_url
        self.mongo_db = mongo_db

    def process_item(self, item, spider):

       if spider.name == "zfcgy":  
       
        self.db.zfcg.insert(dict(item))
        print(item)
        print("加入成功!")
        return item

    def open_spider(self, spider):
        self.client = MongoClient(self.mongo_url)
        self.db = self.client[self.mongo_db]

    def close_spider(self):
        self.client.close()

    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            mongo_url=crawler.settings.get('MONGO_URL'),
            mongo_db=crawler.settings.get('MONGO_DB')
        )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值