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

 

下載結果截圖

說明

此爬蟲僅用於個人學習,如果侵權,即刻刪除!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM