欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nodejs之简单的爬数据

程序员文章站 2022-05-30 16:31:09
...

nodejs 之简单爬数据

  • 准备

    • cheerio 插件
      cheerio 是一个为服务器特别定制的,快速、灵活、实施的 jQuery 核心实现方案。
    • axios 插件
      axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
  • 代码

    const fs = require("fs");
    const cheerio = require("cheerio");
    const axios = require("axios").default; // 发起一个网络请求获取数据
    const books = [];
    axios
    .get(
    "https://www.17k.com/top/refactor/top100/01_subscribe/01_subscribe__top_100_pc.html"
    ) //此链接为17k小说网的排行榜网址
    .then((res) => {
    const $ = cheerio.load(res.data);
    
        $(".BOX")
          .eq(0) // 获取指定索引位置的数据,返回一个jq实例
          .find("table tr") // find 查找符合元素选择条件的数据
          .each(function (index) {
            if (index > 0) {
              // 不取第一项
              let book = {};
              book.id = index;
              book.title = $(this).find("td").eq(2).find("a").text();
              book.link =
                "https:" + $(this).find("td").eq(2).find("a").attr("href");
              fs.mkdirSync("./books/" + book.title, {
                recursive: true,
              });
              books.push(book);
            }
          });
        fs.writeFileSync("./books.json", JSON.stringify(books));
    
    });
    
        ```