从零开始打造AI知识库:使用爬虫自动化采集网页内容的完整教程

news/2025/1/19 10:43:34/

言简意赅的讲解crawler爬虫解决的痛点

童鞋们在实现私有化大语言模型和实现精准参数归纳与程序执行之后还是不满足AI相关的能力。在 AI 驱动的知识管理时代,快速搭建属于自己的知识库已成为很多开发者和团队的核心需求。本文将带你一步步创建一个基于网页爬取的知识库,并将其直接应用到 GPT 模型中。这种方法适用于个人博客、企业文档甚至特定网站的内容爬取与整理。


为什么需要爬虫知识库

AI 模型如 GPT 的强大能力依赖于高质量的上下文知识库。通过爬虫,我们可以:

  • 自动化采集分散在网页上的信息。
  • 定制化选择和过滤相关内容。
  • 快速构建一个可用的语义搜索和对话式 AI 系统。

环境搭建与依赖安装

以下是快速搭建爬虫系统并获取知识库的完整步骤:

1. 启动容器环境

使用 Docker 来创建一个隔离的环境,确保爬虫工具运行的依赖无冲突。

docker run -it --name gpt-crawler-container node:lts bash
  • --name:命名容器为 gpt-crawler-container
  • node:lts:使用 Node.js LTS 版本镜像。
  • bash:进入交互式 Shell。

启动镜像


2. 安装依赖

在容器中执行以下命令,安装必要的工具和依赖:

2.1 更新系统并安装基础工具
apt-get update && apt-get install -y git curl gnupg
  • apt-get update:更新软件包列表。
  • git:用于克隆代码仓库。
  • curlgnupg:下载和验证相关工具的依赖。

容器更新系统和基础工具

2.2 安装 Playwright 依赖
npx playwright install && npx playwright install-deps
  • Playwright 是一个强大的浏览器自动化工具,支持多种浏览器的爬取任务。

容器安装Playwriight

2.3 克隆爬虫项目并安装依赖
cd /home && git clone --depth=1 https://github.com/builderio/gpt-crawler && cd gpt-crawler
npm install
  • git clone:从官方仓库获取爬虫代码。
  • npm install:安装爬虫项目的所有依赖。

克隆<a class=爬虫项目并安装依赖" />


3. 配置爬虫

爬虫的核心是配置文件 config.ts,它定义了爬取目标、内容选择器和其他关键参数。

示例配置说明
export const defaultConfig: Config = {url: "https://www.builder.io/c/docs/developers",match: "https://www.builder.io/c/docs/**",selector: `.docs-builder-container`,maxPagesToCrawl: 50,outputFileName: "output.json",
};
  • url爬虫的起始 URL。例如,这里从 Builder.io 的开发者文档页面开始。
  • match:用于筛选需要爬取的链接,支持通配符。
    • 示例:https://www.builder.io/c/docs/** 会匹配所有文档子页面。
  • selector:CSS 选择器,指定需要提取内容的区域。
    • 示例:.docs-builder-container文档内容的容器。
  • maxPagesToCrawl:限制最大爬取页面数,避免过度爬取。
  • outputFileName:保存爬取结果的文件名。

完整参数解析

以下是 config.ts 中的所有可配置项:

  1. url爬虫起始页面 URL。如果提供站点地图 (sitemap),则优先下载站点地图内容。
  2. match:用于匹配 URL 的规则,仅爬取符合规则的页面。
  3. selector:提取内容的 CSS 选择器,决定爬取页面中的哪部分内容。
  4. maxPagesToCrawl:最大爬取页面数。
  5. outputFileName:输出文件的名称,爬取结果保存为 JSON 格式。
  6. resourceExclusions:可选,排除某些资源类型(如图片、视频、样式文件等),加快爬取速度。
  7. maxFileSize:可选,限制文件的最大大小(MB)。
  8. maxTokens:可选,限制输出文件的最大 token 数,用于控制 GPT 模型输入的大小。

示例配置:采集文浩(楠搏万)博客文章

以下是一个具体示例,爬取指定博客中的内容,我展示的示例为爬取我自己的文浩(楠搏万)的博客:

import { Config } from "./src/config";export const defaultConfig: Config = {url: "https://wenhaono1.blog.csdn.net/?type=blog",match: "https://wenhaono1.blog.csdn.net/article/details/**",selector: `.user-profile-body-right,.blog-content-box`,maxPagesToCrawl: 500,outputFileName: "output.json",maxTokens: 200000,
};
  • url:CSDN 博客首页。
  • match:匹配所有文章详情页。
  • selector:选择文章内容和用户信息的 CSS 类。
  • maxTokens:将结果限制在 200,000 个 token 以内,便于直接用作 GPT 的输入。

采集 CSDN 博客文章


4. 运行爬虫

执行以下命令开始爬取:

npm start

成功运行后,结果会存储在配置文件中指定的 output.json 中。

运行<a class=爬虫" />


5. 知识库直接用于 GPT

爬取完成的 output.json 文件是直接可用的 GPT 知识库

  1. 打开 GPT 的知识库管理界面。
  2. 上传 output.json
  3. 知识库即刻生效,无需额外转换或调整。

<a class=知识库生成结果" />

<a class=知识库上传GPT" />


常见问题与优化

  1. 如何优化爬取速度?

    • 使用 resourceExclusions 排除不必要的资源(如图片、CSS 文件)。
    • 通过 maxPagesToCrawl 限制页面数。
  2. 如何确保抓取的内容干净整洁?

    • 精确定义 selector
    • 可在后续处理时清理无关内容。
  3. 配置 maxTokens 的意义?

    • 避免输出文件过大,确保符合 GPT 模型的输入限制。

总结

通过简单的步骤,我们成功完成了从爬虫搭建到 AI 知识库生成的全过程。无论是技术博客、企业文档还是行业资讯,都可以用这种方式快速创建一个高效的 AI 支持平台,为工作和学习赋能。

动手试试,创造属于你的 AI 知识库吧!


通过上述内容,你就已经基本理解了这个方法,基础用法我也都有展示。如果你能融会贯通,我相信你会很强

Best
Wenhao (楠博万)


http://www.ppmy.cn/news/1564386.html

相关文章

细说STM32F407单片机独立看门狗IWDG的原理及使用方法

目录 一、独立看门狗的工作原理 二、独立看门狗的HAL驱动程序 1、初始化函数HAL_IWDG_Init() 2、刷新看门狗的函数HAL_IWDG_Refresh() 3、宏函数 三、独立看门狗使用示例 1、项目动作说明 2、工程配置 &#xff08;1&#xff09;DEBUG、USART6、GPIO、CodeGenrator &…

【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目

解决idea至少创建jdk17项目 问题 idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗?解决 问题 idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗 我本来以为是 IDEA 版本更新导致的 Bug&#xff0c;开始还没在意。 直到我今天自己初始化项目时才发现&am…

BGP边界网关协议(Border Gateway Protocol)概念、邻居建立

一、定义 主要用于交换AS之间的可达路由信息&#xff0c;构建AS域间的传播路径&#xff0c;防止路由环路的产生&#xff0c;并在AS级别应用一些路由策略。当前使用的版本是BGP-4。 二、环境 底层以OSPF进行igp互联互通&#xff0c;上层使用BGP协议。 三、基本原理 1、BGP是一…

MySql操作指南5--事务与并发控制

数据库事务是保障数据一致性和可靠性的重要手段&#xff0c;并发控制则在多用户环境下确保数据的正确性。风云今天详细探讨数据库事务的管理、并发访问的最佳实践&#xff0c;乐观锁与悲观锁的应用&#xff0c;以及Golang 中的事务实现、并发访问的最佳实践&#xff0c;通过合理…

学英语学技术:Elasticsearch 线程池

单词 汉语意思 音标 allocate 分配 /ˈləˌkeɪt/ coordination 协调 /koʊˌɔːrdɪˈneɪʃn/ deprecated 废弃的 /ˈdɛprəˌkeɪtɪd/ elasticsearch 弹性搜索&#xff08;专有名词&#xff09; /ˌɛlɪkˈsɜːrtʃ/ execute 执行 /ˈɛksɪˌkjuːt…

C 语言的void*到底是什么?

一、void* 的类型任意性 void* 是一种通用指针类型。它可以指向任意类型的数据。例如&#xff0c;它可以指向一个整数&#xff08;int&#xff09;、一个浮点数&#xff08;float&#xff09;、一个字符&#xff08;char&#xff09;或者一个结构体等。在C语言中&#xff0c;当…

电脑换固态硬盘

参考&#xff1a; https://baijiahao.baidu.com/s?id1724377623311611247 一、根据尺寸和缺口可以分为以下几种&#xff1a; 1、M.2 NVME协议的固态 大部分笔记本是22x42MM和22x80MM nvme固态。 在京东直接搜&#xff1a; M.2 2242 M.2 2280 2、msata接口固态 3、NGFF M.…

Word中如何格式化与网页和 HTML 内容相关的元素

在 Microsoft Word 中&#xff0c;HTML变量、HTML打字机、HTML地址、HTML定义、HTML键盘、HTML缩写、HTML样本、HTML引文 等样式是针对在文档中处理与 HTML 相关内容时&#xff0c;方便格式化特定类型的文本元素。以下是每个样式的详细说明及其使用场景&#xff1a; 1. HTML 变…