用node爬下来所有王者荣耀的皮肤图片(做壁纸用)

本文仅供学习哦 需要转载请随意,记得标出处

先看看这帅气的图片

 

 上代码,代码很简单

/**
 * 生成的图片文件会在本文件夹下的img文件里
 * 先把代码复制到一个js文件里。比如 down.js 
 * 执行 node down.js 即可 
 * 会由于电脑硬盘速度和网络速度的原因,有些可能导致失败。只是学习用,不要太挑
 * by Army_海军
 */
const fs = require('fs');
const https = require("https");
const http = require("http");
const path = require('path');
// 检查是否存在这个文件夹
let statusImg = fs.existsSync(path.join(__dirname,'./img'));
if(!statusImg) {
  fs.mkdirSync('./img');
} 
https.get('https://pvp.qq.com/web201605/js/herolist.json', (res) => {
  // console.log('statusCode:', res.statusCode);
  // console.log('headers:', res.headers);
  let text = '';
  res.on('data', (d) => {
    // process.stdout.write(d);
    // console.log(JSON.parse(d));
    text+=d.toString();
  });
  res.on('end', () => {   
    /**
     * 返回json的格式里每项的格式
     *  ename: 105,
        cname: '廉颇',
        title: '正义爆轰',
        new_type: 0,
        hero_type: 3,
        skin_name: '正义爆轰|地狱岩魂' }
     */
    let herosList = JSON.parse(text);
    for (let index = 0; index < herosList.length; index++) {
      const element = herosList[index];
      downLoadImg(element);
    }
  });
  
}).on('error', (e) => {
  console.error(e);
}).end();

function downLoadImg(element) {
  // 检查是否存在这个文件夹
  let stat = fs.existsSync(path.join(__dirname,'./img/'+ element.title));
 
  if(!stat) {
    fs.mkdirSync('./img/'+ element.cname);
  } 
  for (let index = 0; index < 10; index++) {
    http.get(
      'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' 
      + element.ename 
      + '/' 
      + element.ename 
      + '-bigskin-' 
      + (index+1) 
      + '.jpg', 
      (res) => {
      // console.log('statusCode:', res.statusCode);
      // console.log('headers:', res.headers);
      if(res.statusCode === 404) {
        return;
      }
      let text = '';
      res.setEncoding("binary");
      res.on('data', (d) => {
        // process.stdout.write(d);
        // console.log(JSON.parse(d));
        text += d;
      });
      res.on('end', () => {
        if(!text) return;
        // fs.writeFile(
        //   'img/' +element.cname + 
        //   '/'+ index 
        //   + '.jpg', text, "binary",(err)=> {
        //   if(err) throw err;
        //   console.log('The file has been saved!' + element.title + index);
        // })
        fs.writeFileSync('img/' +element.cname + '/'+ index + '.jpg', text, "binary");
      });
      
    }).on('error', (e) => {
      console.error(e);
    }).end();
  }
  
}

新建个文件夹,新建个js ,然后把我的代码放进去 例如 down.js

在该文件夹下执行 

node down.js

剩下的时间就是等待结束了。

会生个img文件夹里边就是要的图片了。分好类了。

用node爬下来所有王者荣耀的皮肤图片(做壁纸用)_第1张图片

喜欢就点个赞。加个关注!谢谢。

 

你可能感兴趣的:(Node,nodejs,王者荣耀皮肤)