• 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))
    })

    下载结果截图

    说明

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

     

  • 相关阅读:
    opencv图片压缩视频并读取
    python常见模块统计
    MySQL索引及优化
    web开发框架之 Tornado
    Tornado项目基本架构
    python闭包以及装饰器
    python语法糖
    python os模块
    TCP中的3次握手和4次挥手
    Python常见的数据类型方法
  • 原文地址:https://www.cnblogs.com/hzj680539/p/9658479.html
Copyright © 2020-2023  润新知