AI导航工具我开源了利用node爬取了几百条数据

序言

别因今天的懒惰,让明天的您后悔。输出文章的本意并不是为了得到赞美,而是为了让自己能够学会总结思考;当然,如果有幸能够给到你一点点灵感或者思考,那么我这篇文章的意义将无限放大。

背景

随着AI的发展市面上的AI网站或者软件也是越来越多了,但是我们知道的网站可能就只有那么比较出名的那么几个,但是实际上好用的AI网站起码都得几百上千了(也有不少套壳的),我有时候需要用AI软件的时候都是百度各种找,实在是不太方便,然后我想反正自己也要用原来的服务器空置到的,何不废物利用呢?所以就有了这个网站的诞生 吉云工具箱 ;代码库 dream-utools 有兴趣的朋友可以去看一下,我将数据都转为了js数据,可以直接部署你私有网站;当然如果你觉得有用就收藏哈。

代码库

我自己本身想自己去搭建这么一个网站,但是我觉得太麻烦了;还不如直接找一些开源的代码直接复制使用,我在GitHub上找了好几个开源库以后发现这个库比较符合我的需求,而且界面看起来也是比较简单好看的 gengyun-nav

数据来源

由于开源库的数据来源的通过接口返回的,所有没有现成的数据;所以就想到去爬取一些数据(本来是准备一个一个的去写的);我查看了这类网站的一个特性都是返回的html;我就将爬取到的html数据保存到一个txt文件中。一下代码就是解析html中的数据。

以下的代码都是爬取数据的示例代码,如果你们在爬取数据的时候请根据自己的实际情况进行修改即可。

  • 获取每一个分类
javascript 复制代码
// 导航栏
async function menus() {
  const data = await fs.readFile("./index.txt");

  const html = data.toString();
  // 解析class=content的div
  const $ = cheerio.load(html);
  const content = $(".content").html();
  // 解析class=align-items-center的div=> 是class=content的div的子元素=>获取所有多个class=align-items-center的div
  const alignItemsCenter = $(".content")
    .find(".d-flex.flex-fill.flex-tab.align-items-center")
    .map((i, el) => {
      return $(el).html();
    })
    .get();
  // console.log(alignItemsCenter);
  let arr = [];
  // 循环获取所有多个class=align-items-center的div
  for (let i = 0; i < alignItemsCenter.length; i++) {
    const element = alignItemsCenter[i];
    // 获取navItem a标签的内容
    const a = $(element)
      .find(".nav-item")
      .find("a")
      .map((i, el) => {
        return $(el).html();
      })
      .get();

    arr.push({
      id: uuid(),
      name: "办公工具",
      pid: 0,
      ind: i,
      icon: "CashOutline",
      children: a.map((v) => {
        return {
          id: uuid(),
          name: v,
          icon: "CashOutline",
        };
      }),
    });
  }
  //   将arr写入json文件
  await fs.writeFile("./menus.json", JSON.stringify(arr, null, 2));
}

menus();
  • 获取每个分类的内容(每一个AI网站)
javascript 复制代码
// 工具类
async function index() {
  const data = await fs.readFile("./index.txt");

  const html = data.toString();
  // 解析class=content的div
  const $ = cheerio.load(html);
  const alignItemsCenter = $(".content-layout")
    .find(".tab-content .mt-4")
    .map((i, el) => {
      return $(el).html();
    })
    .get();

  let obj = {};

  //   console.log(99999, alignItemsCenter);
  const dataJson = await fs.readFile("./index.json");

  for (let i = 0; i < alignItemsCenter.length; i++) {
    const element = alignItemsCenter[i];
    // 获取navItem a标签的内容
    // const a = $(element).find(".url-body .default").find("a").map((i, el) => {
    //   return $(el).html();
    // })
    // .get();
    const itemsList = $(element)
      .map((i, el) => {
        return $(el).html();
      })
      .get();
    // console.log(99999999999, itemsList);

    let arr = [];

    for (const item of itemsList) {
      // item里面有两个a标签,第一个是图片,第二个是链接;获取第二个a标签的链接和title
      const a = $(item).find("a").eq(1);
      const href = a.attr("href"); // 获取a标签的href属性
      // 获取第一个a标签font-weight-normal的内容
      const text = $(item).find(".text-xs").text();
      const title = $(item).find(".font-weight-normal").text();
      const img = $(item).find("a").find("img").attr("data-src");
      // console.log(777, href, text, title);
      
      // 获取a标签的链接和title
      // const img = $(item).find("a").find("img").attr("data-src");
      // const text = $(item).find("a").find(".text-xs").text();
      // const title = $(item).find("a").find(".font-weight-normal").text();

      // 获取a标签的href属性
      // const a = $(item).find(".togo");
      // console.log(777, a);
      arr.push({
        id: uuid(),
        icon:img,
        name: title,
        description:text,
        href: href,
      });
    }

    obj[i] = arr;
  }

    // await fs.writeFile("./index.json", JSON.stringify(obj, null, 2));

  // console.log(99,alignItemsCenter);
}

// index();

总结(注意)

在AI爆发的的时代是我们最好的时代,我们应该好好去把握住这个机会;从古至今大部分人都是去怎么使用好工具而不是去创作出工具(至少对于大部分人是这样的,也不是说我看不起自己和很多人,但这是事实),那么我们就站在巨人的肩膀上使用好他们创作的工具,也是一种更新,愿诸君在新的一年都有一个好的开始以及机遇。

相关推荐
csj50几秒前
前端基础之《React(9)—React组件》
前端·react.js
研究点啥好呢2 分钟前
Muses | 搭建属于你自己的AI生图网站
前端·人工智能·ai·github
aircrushin2 分钟前
给宝宝办了个宴,朋友用trae做的工具帮了大忙
前端·后端
程序员Sunday11 分钟前
爆肝万字!这应该是全网最全的 Codex 实战教程了
前端·后端·ai编程
aircrushin12 分钟前
朋友用trae搭建的工具,解决了旅行拍照共享的大事儿
前端·后端
星栈13 分钟前
把业务逻辑写成纯函数之后,我再也不想写 Service 层了
后端·开源
codecrafter12313 分钟前
LocalAI 开源AI引擎,本地运行多模态模型无需GPU
人工智能·其他·开源
ZC跨境爬虫18 分钟前
跟着 MDN 学 HTML day_41:(DOMParser 接口详解)
前端·javascript·ui·html·音视频
光影少年31 分钟前
useLayoutEffect 和 useEffect 区别、使用场景
开发语言·前端·javascript
LIO42 分钟前
掌握 React useEffect:核心概念、使用技巧与常见陷阱
前端·react.js