Node 爬虫,批量下载并保存图片

GitHub地址

目标网站:妹子图(点进去别忘了回来~~)
项目功能:批量下载该网站的相册
姊妹项目:批量爬取并下载头条视频

启动项目

命令:

1 npm i
2 npm start

配置文件:

1 // 配置相关
2 module.exports =  {
3   originPath: 'http://www.mzitu.com', // 请求地址
4   savePath: 'E:/meizi', // 存放图片路径
5   maxPage: 20 // 可爬取的最大页码
6 }

技术点

Axios: 发起 get 请求,获取页面和图片 stream

// 获取页面
async getPage (url) {
  return {
    res: await axios.get(url)
  }
}
// 把获取的文件写入本地
await axios({
  method: 'get',
  url: imageSrc,
  responseType: 'stream',
  headers
}).then(function(response) {
  response.data.pipe(fs.createWriteStream(fileName))
})

Cheerio: 覆盖了 jQuery dom 部分核心 API,可操作获取的文档对象

// res.data: 获取的文档对象
let list = []
const $ = cheerio.load(res.data)
// 获取文档中所有的相册
$('#pins li a').children().each((index, item) => {
  let album = {
    name: item.attribs.alt, // 相册名称
    url: item.parent.attribs.href // 相册地址
  }
  list.push(album)
})

fs.createWriteStream: 保存图片到本地

await axios({
  method: 'get',
  url: imageSrc,
  responseType: 'stream',
  headers
}).then(function(response) {
  response.data.pipe(fs.createWriteStream(fileName))
})

 

下载结果截图

说明

此爬虫仅用于个人学习,如果侵权,即刻删除!

 

posted @ 2018-09-17 00:28  提佰萬  阅读(2823)  评论(0编辑  收藏  举报