node.js抓取网络图片保存到本地,node.js抓取防盗链网络图片保存到本地

node.js抓取网络图片保存到本地,node.js抓取防盗链网络图片保存到本地


使用模块request、fs,request模块在npm里平均月下载量超过3000W次,那是相当的牛逼。


node版本8.0+,如果版本是8.0以下调用的时候就直接用promise。


(1)创建项目文件夹

mkdir TestProject
cd TestProject
npm init --yes
npm install request --save

(2)创建文件common.js

let request = require("request");
let fs = require("fs");
    
class Ut {
  /**
     * 下载网络图片
     * @param {object} opts 
     */
  static downImg(opts = {}, path = '') {
    return new Promise((resolve, reject) => {
      request
        .get(opts)
        .on('response', (response) => {
          console.log("img type:", response.headers['content-type'])
        })
        .pipe(fs.createWriteStream(path))
        .on("error", (e) => {
          console.log("pipe error", e)
          resolve('');
        })
        .on("finish", () => {
          console.log("finish");
          resolve("ok");
        })
        .on("close", () => {
          console.log("close");
        })
    
    })
  };
}
    
module.exports = Ut;

(3)创建pic文件夹,图片放置在pic文件夹下,请确定读写权限

(4)创建调用文件test.js

let Ut = require("./common");
    
(async () => {
  try {
    let url = "https://images2015.cnblogs.com/blog/287057/201609/287057-20160906212948973-1900739191.png";
    let opts = {
      url: url,
    };
    let path = "./pic/1.jpg";
    let r1 = await Ut.downImg(opts, path);
    console.log(r1);
  }
  catch (e) {
    console.log(e);
  }
})()

(5)运行

node test.js

出现以下提示即为成功。

$ node test.js
img type: image/png
finish
ok
close


by 雪洁 2018-06-13 09:07:15 41 views
我来说几句

相关文章