scrapy中使用mongodb存储数据,settings配置账号密码

         网上查找很多在scrapy中向mongodb存储数据,但是都没说明如何输入密码,那就自己总结下,根据公司项目优化了代码,从settings导入host,port,password,user,db等信息

把mongodb配置相关信息放在scrapy项目中的settings.py里,如下图

# mongoDB配置
# MONGO_HOST = "120.0.0.1"  # 主机IP
# MONGO_PORT = 27017  # 端口号
# MONGO_DB = "spider"  # 库名
# MONGO_USER = "spider" #用户
# MONGO_PSW = "spider" #密码

pipelines.py文件存储管道如下所示

import pymongo
from pymongo import MongoClient
class mongodbPipeline(object):
    def __init__(self,MONGO_HOST,MONGO_PORT,MONGO_PSW,MONGO_USER,MONGO_DB):
        # 链接数据库
        # # 数据库登录需要帐号密码的话
        mongo_url = 'mongodb://{0}:{1}@{2}:{3}/?authSource={4}&authMechanism=SCRAM-SHA-1'.format(MONGO_USER, MONGO_PSW,
                                                                                                 MONGO_HOST,MONGO_PORT, MONGO_DB)
        print('mongo_url',mongo_url)
        self.client = MongoClient(mongo_url)
        self.db = self.client[MONGO_DB]  # 获得数据库的句柄
        # self.coll = self.db[MONGO_COLL]  # 获得collection的句柄

    @classmethod
    def from_crawler(cls, crawler):
        return cls(MONGO_HOST=crawler.settings.get('MONGO_HOST'),
                   MONGO_PORT=crawler.settings.get('MONGO_PORT'), 
                   MONGO_PSW=crawler.settings.get('MONGO_PSW'),
                   MONGO_USER=crawler.settings.get('MONGO_USER'),
                   MONGO_DB=crawler.settings.get('MONGO_DB'),
                   # MONGO_COLL=crawler.settings.get('MONGO_COLL'),
                   )

    def process_item(self, item, spider):
        postItem = dict(item)  # 把item转化成字典形式
        coll = self.db[item.table]
        coll.insert(postItem)  # 向数据库插入一条记录
        return item

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

最后记得在settings中打开mongodb的 ITEM_PIPELINES 就可以愉快的保存数据到mongodb了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值