scrapy爬取数据存入MongoDB

scrapy中的数据处理部分是在pipelines文件中,所有对该文件进行修改
mongodb的数据信息网上一般都放在settings中,而这里都放在pipelines中

  • 导入所需库
from  pymongo import MongoClient
from 项目名.items import Item类
  • 这里使用的有账号密码的方式连接数据库
class MongodbPipeline(object):
      #连接数据库
      def open_spider(self,spider):
 
          db_uri = spider.settings.get('MONGODB_URI', 'mongodb://host:port
          db_name = spider.settings.get('MONGODB_DB_NAME','所要连接数据库名称')
          self.db_client = MongoClient('mongodb://账户名:密码@host:port
          self.db = self.db_client[db_name]
       #关闭数据库
      def close_spider(self, spider):
          self.db_client.close()
      #插入数据
      def process_item(self, item, spider):
          self.insert_db(item)
        
          return item
      def insert_db(self, item):
          if isinstance(item, WccPlaItem):
              item = dict(item)#将一项数据转化为字典格式
          #向集合artdb中插入数据
          self.db.artdb.insert_one(item)

  • 在settings中进行相应的设置
ITEM_PIPELINES = {
 
       'XXXX.pipelines.MongodbPipeline': 100,
       'XXXX.pipelines.WccPlaPipeline': 400,
  }

数值越小优先级越高
这里导入的库是from pymongo import MongoClient,而非import pymongo
因为随着版本更新换了,连接数据库的账号密码端口号和host都可以在该文件直接填写,最后要提醒的是 self.db.artdb.insert_one(item)中的artdb就是所要连接的数据库的表名

  • 参考
    scrapy连接MongoDB

你可能感兴趣的:(scrapy爬取数据存入MongoDB)