基本信息
源码名称:nodejs 爬取豆瓣电影海报图片并下载到本地(async/await入门级示例)
源码大小:0.03M
文件格式:.zip
开发语言:js
更新时间:2018-07-08
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
nodejs async/await入门级示例

爬取结果如下:


// import fs from 'fs';
var fs = require('fs');
var path = require('path');
var request = require('request');


var movieDir = __dirname   '/movies',
  exts     = ['.mkv', '.avi', '.mp4', '.rm', '.rmvb', '.wmv'];

// 读取文件列表
var readFiles = function () {
  return new Promise(function (resolve, reject) {
    fs.readdir(movieDir, function (err, files) {
      resolve(files.filter((v) => exts.includes(path.parse(v).ext)));
    });
  });
};

// 获取海报
var getPoster = function (movieName) {
  let url = `https://api.douban.com/v2/movie/search?q=${encodeURI(movieName)}`;

  return new Promise(function (resolve, reject) {
    request({url: url, json: true}, function (error, response, body) {
      if (error) return reject(error);

      resolve(body.subjects[0].images.large);
    })
  });
};

// 保存海报
var savePoster = function (movieName, url) {
  request.get(url).pipe(fs.createWriteStream(path.join(movieDir, movieName   '.jpg')));
};


(async () => {
  let files = await readFiles();

  // await只能使用在原生语法
  for (var file of files) {
    let name = path.parse(file).name;

    console.log(`正在获取【${name}】的海报`);
    savePoster(name, await getPoster(name));
  }

  console.log('=== 获取海报完成 ===');
})();