Cheerio 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

爬取数据

在前面的小节中我们把准备工作和 html 代码分析都完成了。现在开始爬取数据

把对 html 解析的工作封成一个方法,如下:

function crawlerChapter(html) {
    var $ = cheerio.load(html);
    var chapters = $('.panel');
    var data = [];

    chapters.map(function (node) {
        var chapters = $(this);
        var chapterTitle = chapters.find('h4').text().trim();
        var sections = chapters.find('li');
        var chapterData = {
            chapterTitle: chapterTitle,
            section: []
        };
        sections.map(function (node) {
            var section = $(this).text().trim();
            chapterData.section.push(section);
        });
        data.push(chapterData);
    });
    console.log(data);
};

解析:首先通过cheerio的 load 方法把html加载;然后对.panel通过 map 进行遍历。之后我们在 map 中 组装 要数据格式,如上述中 chapterData。再对 小节 li 进行遍历,把 section 通过 push 方法 添加到 chapterData.section 的数组中。再把组装好的数据 push 到 我们创建的空数组 data 中。最后通过console.log进行输出。

输出数据之后,我们看到数据中除了第一章中有section有值,其他的章没有值,不要担心,就是这样的。因为我们汇智网对其进行了限制,所以只能爬取到第一章中的小节标题。

在右侧代码框中第12行中调用 crawlerChapter(html) 方法,查看我们爬取出来的数据。