node.js基础学习-cheerio模块-简单小爬虫(五)

学习cheerio模块,简单做一个爬取图片网站的图片,并且将这些图片下载到本地指定的文件夹下,很多图片网站都有一些反爬取的机制,找的好几个都会报302错误,所以我找了一个小的图片网站,这个没有反爬取机制,实现了一下,最后成功获取并下载到了图片,以下就是全部的完整代码,也不做太详细的记录了。

完整的爬取图片代码如下:

js 复制代码
const https = require('https');
const request = require('request');
const fs = require('fs');
const cheerio = require("cheerio");

//下载爬取的图片文件夹
let downloadDir = 'C:/Users/admin/Desktop/spider/';

/**
 * 开始爬取
 * @param url
 */
function start(url) {
    let result = [];
    https.get(url, (response) => {
        //获取响应数据
        response.on('data', (chunk) => {
            result.push(chunk);
        })
        //响应结束
        response.on('end', () => {
            //将数据转换为字符串(html字符串)
            let data = result.join('');
            spider(data)
        })
    })
}

/**
 * 爬虫函数
 * @param data 网页数据
 */
function spider(data) {
    let $ = cheerio.load(data);
    let items = $('.pli li');
    console.log('爬取到的数据条数:', items.length);
    items.each((index, item) => {
        let url = $(item).find('.il_img img').attr('src');
        url = url.split('!')?.[0];
        url = `https:${url}`
        let title = $(item).find('p a').text();
        let imgType = url.split('.').pop();
        request(url).pipe(fs.createWriteStream(`${downloadDir}/${title}_${index}.${imgType}`));
    });
}

//开始爬取
start('https://www.k2r2.com/shaonv_c43757/9.html');

启动以后就会将爬取到的图片下载到指定文件夹中

原网页的图片列表

爬取到的图片

相关推荐
ONE_Gua9 小时前
chromium魔改——CDP(Chrome DevTools Protocol)检测01
前端·后端·爬虫
Mintopia12 小时前
Node.js 中 fs.readFile API 的使用详解
前端·javascript·node.js
云上艺旅12 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
ONE_Gua12 小时前
chromium魔改——navigator.webdriver 检测
前端·后端·爬虫
你觉得20512 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
A旧城以西13 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ13 小时前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL0007513 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
吴梓穆14 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
咖啡教室14 小时前
nodejs开发后端服务详细学习笔记
后端·node.js