Node 批量抓取並下載某站點的圖片
阿新 • • 發佈:2018-12-10
批量抓取網站圖片並儲存在本地
目標網站:妹子圖(點進去別忘了回來~~) 專案功能:批量下載該網站的相簿 姊妹專案:批量爬取並下載頭條視訊
啟動專案
命令
npm i
npm start
配置檔案
// 配置相關
module.exports = {
originPath: 'http://www.mzitu.com', // 請求地址
savePath: 'E:/meizi', // 存放路徑
maxPage: 20 // 可爬取的最大頁碼
}
技術點
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))
})
爬取結果截圖
說明
此爬蟲僅用於個人學習,如果侵權,即刻刪除!