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)) })
下载结果截图
说明
此爬虫仅用于个人学习,如果侵权,即刻删除!