nodejs 爬取壹纳网全站写真图片

本文使用nodejs爬取网页的写真图片,爬取图片仅为学术研究练习所用,爬取数据做了限制并未进行大批量破坏服务器的暴力请求爬取!

以下代码仅是练习分享,还请不要随意大批量爬取网站图片。如有其他破坏行为均已本文无关。

爬取到错误的图片,会打印错误信息并删除该错误图片

核心代码如下:(只有图片下载片段代码)

const imgDownLoad = async (imgUrlArr) => {
    const promiseStateArr = await imgUrlArr.map(async item => {
        try {
            const response = await axios.get(item, { responseType: 'stream' });
            const imagePath = path.join(__dirname, `./download/${path.basename(item)}`);
            const imageStream = fs.createWriteStream(imagePath);

            response.data.pipe(imageStream);

            return new Promise((resolve, reject) => {
                imageStream.on("finish", () => {
                    console.log(`下载完成:${path.basename(item)}`);
                    resolve(); // 下载完成时,resolve Promise
                });

                imageStream.on("error", (err) => {
                    console.error(`下载失败:${path.basename(item)}`, err);
                    fs.unlinkSync(imagePath); // 删除下载失败的文件
                    reject(err); // 下载出错时,reject Promise
                });
            });
        } catch (err) {
            console.error(`下载错误:${path.basename(item)}`, err);
            // 如果下载出错,直接跳过该图片继续下载下一个图片
            return Promise.resolve();
        }
    });

    return Promise.all(promiseStateArr);
};
  • 思路:
  • 传入用户输入的关键字 进行页面请求
  • /将得到的网页源码 进行传入 进一步进行解析

  • 返回所有的详情页跳转地址

  • 拿到详情页的图片数据 拿到所有的图片地址

  • 遍历 图片地址 发起图片资源请求

  • 将请求资源利用管道进行写入到文件夹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值