node爬取LOL英雄信息

连接mongodb数据库并插入多个数据

function insertMany(collection,arr){
  return  new Promise((resolve,reject)=>{
    var MongoClient = require('mongodb').MongoClient;
    var url = 'mongodb://127.0.0.1:27017/';
  MongoClient.connect(url,function(err,db){
  if(err) {throw err}
  var dbo = db.db('lolinfo');//连接 lolinfo 数据库
  dbo.collection(collection).insertMany(arr,function(err,res){
    if(err) reject(err);
    console.log("文档输入成功 插入文档数为",res.insertedCount);
    db.close();
    resolve();
  })
})
  })
}

获取英雄列表

进入官网f12拿取接口

//获取英雄列表
async function getHeroList(){
  let httpUrl = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js';
  let res = await axios.get(httpUrl);
  console.log(res.data.hero);
  await insertMany('herolist',res.data.hero);
  return res.data.hero;
}
 getHeroList()

通过heroID获取单个英雄信息

连接mongodb数据库并插入一个英雄信息

function insertOne(collection,obj){
  return new Promise((resolve,reject)=>{
    const MongoClient = require('mongodb').MongoClient
    const url = 'mongodb://127.0.0.1:27017/'
  MongoClient.connect(url,function(err,db){
  if(err) {throw err}
  var dbo = db.db('my');//连接 lolinfo 数据库
  dbo.collection(collection).insertOne(obj,function(err,res){
    if(err) reject(err)
    console.log("文档输入成功");
    db.close();
    resolve()
  })
})
  })
}

插入数据

async function getHero(heroid){
  let httpUrl = `https://game.gtimg.cn/images/lol/act/img/js/hero/${heroid}.js`
  let result = await axios.get(httpUrl)
  await insertOne('heroInfo',result.data.hero)
  // console.log(result.data.hero);
  return result.data
}

async function run(){
  let herolist = await getHeroList()
  // console.log(herolist);
  await herolist.reduce(async (pre,item,index)=>{
    await pre
    return new Promise(async (resolve,reject)=>{
      await getHero(item.heroId)
      resolve()
    })
    
  },Promise.resolve())
}
run()

猜你喜欢

转载自blog.csdn.net/qq_60587956/article/details/126201683
今日推荐