1.使用cheerio 处理数据
2.使用download 下载图片
注意:有些图片名称是中文 需要使用 encodeURL() 函数转码
npm i cheerio download
// 引入 https 模块
const https = require('https')
// 引入cheerio这个包
const cheerio = require('cheerio')
// 引入 download
const download = require('download')
// 定义一个爬取的 url网址
let url = 'https://blog.dbsgw.cn/'
// 通过 https 发送一个请求
https.get(url, res => {
//拼接请求流
let chunks = []
// 接收的请求流 字段
res.on('data', function(chunk) {
// 把请求流 字段 放到 上面定义的数组中去
chunks.push(chunk)
})
// 接收请求流的 触发事件
res.on('end', function() {
console.log('数据包传输完毕')
// 把 接收完的数组 进行concat拼接 利用Tostring 转码为 utf-8 方便查看
let html = Buffer.concat(chunks).toString('utf-8')
// 通过 cheerio.load(html) 转换成 cheerio 能处理的 元素
const $ = cheerio.load(html)
//通过 Array原型上面的内容获取网页上的图片
// const html_body = Array.prototype.map.call($('img'), item =>
// $(item).attr('src')
// )
// 通过循环获取
const html_body = []
$('img').each((index, item) => {
//encodeURI 转码 防止图片有中文
html_body.push(encodeURI($(item).attr('src')))
})
// 通过 $('.content') 类似于css3选择器方式 获取内容 是不是很方便
console.log(html_body)
// 下载一张图片
// download(html_body[0], 'dist').then(() => {
// console.log('下载成功')
// })
// 下载 网页所有图片
Promise.all(html_body.map(x => download(x, 'dist'))).then(() => {
console.log('下载所有图片')
})
})
})
发表评论