AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


一款超级给力的网页内容获取工具,私有化部署,和RAG更搭配,Start 22K!
发布日期:2025-01-17 08:39:35 浏览次数: 1572 来源:有趣的开源集市


如果用过网页获取工具的同学应该就会发现,传统的工具在处理大规模数据和动态网页时性能不足,无法高效加载和提取 JavaScript 动态生成的内容,导致数据抓取速度慢且不完整。而以前我们也介绍过一个能够将网页内容转换成适合大型语言模型(LLMs)处理的格式的工具-Reader


  • 一条命令能够将网页内容转换成适合任何大模型处理的格式,AI时代的检索增强,Star 6.6K!


但是Reader是个在线工具,提供的是SaaS服务,那么也就意味着需要联网使用,而且也有相应的调用限制。

所以,很多时候我们需要一个完全不限制使用,同时还能能够提取网页中的各种元素,包括文本、媒体文件(图片、视频、音频)、内外部链接和元数据的工具,而今天介绍的就是一个不输Reader,但是还能私有化部署的工具-Crawl4AI


01 Crawl4AI 介绍
— 

从名称就能看出,Crawl4AI 一款专为大型语言模型(LLM)优化的开源网页爬虫工具,它通过异步架构和 Playwright 多浏览器支持实现了极速的爬取性能,能够高效地加载和提取动态内容。其高度定制化的功能允许用户根据具体需求灵活调整爬取策略,支持多种数据提取方式,如基于主题、正则表达式和句子等。生成的数据格式适合直接用于 AI 模型的训练和处理,减少了数据转换的复杂性。


?  项目信息

#github地址https://github.com/unclecode/crawl4ai#项目地址https://crawl4ai.com/mkdocs/

?功能特性

  • 异步架构:采用异步编程技术,能够高效地同时处理多个网页请求,显著提高爬虫的效率和性能。

  • 多格式输出:支持多种数据格式输出,包括 JSON、HTML 和 Markdown,方便与 AI 模型和其他数据处理工具集成。

  • 全方位数据提取:能够提取网页中的文本、图片、视频、音频等多媒体数据,以及所有外部和内部链接和元数据。

  • 高度定制化:提供自定义用户代理、请求头和页面修改的钩子功能,用户可以根据具体需求灵活设置爬虫行为。

  • 多浏览器支持:兼容 Chromium、Firefox 和 WebKit 等多种浏览器,能够更好地模拟真实用户的浏览行为。

  • 动态内容处理:支持执行自定义 JavaScript 脚本,能够处理动态加载的内容,确保全面的数据抓取。

  • 会话管理:适用于复杂的多页面爬取场景,能够保持会话状态,实现多步骤的爬取任务。

  • 高级提取策略:支持基于主题、正则表达式、句子等的分块策略,以及利用 LLM 或余弦聚类的高级提取策略,提高数据提取的准确性和效率。


02 Crawl4AI 安装

  • 使用 pip 安装

Crawl4AI 可以作为 Python 包直接通过 pip 安装:

pip install crawl4ai

安装完成后验证:

import asynciofrom crawl4ai import *
async def main():async with AsyncWebCrawler() as crawler:result = await crawler.arun(url="https://www.nbcnews.com/business",)print(result.markdown)
if __name__ == "__main__":asyncio.run(main())


  • 使用 Docker 安装

Crawl4AI 也支持 Docker 安装:

#拉取 Docker 镜像(适用于X86架构):docker pull unclecode/crawl4ai:basic-amd64#运行 Docker 容器:其中your_secret_token为自定义tokendocker run -p 11235:11235 -e CRAWL4AI_API_TOKEN=your_secret_token unclecode/crawl4ai:basic-amd64
安装完成后验证(API访问):import requests# Submit a crawl jobresponse = requests.post("http://localhost:11235/crawl",json={"urls": "https://example.com", "priority": 10})task_id = response.json()["task_id"]# Continue polling until the task is complete (status="completed")result = requests.get(f"http://localhost:11235/task/{task_id}")


  • 1Panel安装

如果觉得上面部署都比较麻烦,那么可以在1Panel中采用图形化安装:


02 在RAG中使用

RAG系统我们以MaxKB为例,具体的MaxKB安装和使用可参考以前的文章:


  • 一个小白也能玩的转的大模型知识库问答系统 ,一键部署、开箱即用,Star 7.1K!
  • 一个可替换 Google,Bing 的 AI 网络搜索引擎,为企业 RAG 插上想象的翅膀!
  • 一个采用 NVIDIA GPU + Xinference + MaxKB搭建企业级、私有化、高性能智能知识库问答系统的开源方案!
  • 一个利用开源 RAG ,基于企业内部知识文档生成万字长文的实践!


本文以Docker部署的 Crawl4AI 为例进行说明。我们需要现在MaxKB的函数库中添加 Crawl4AI 函数:

具体的Python函数代码如下,需要的同学复制粘贴,修改自行部署的 Crawl4AI 地址即可:

def search_url(query):"""使用 Crawl4AI API 进行网页爬取并返回 Markdown 格式的结果。
参数:query (str): 要爬取的网页 URL。
返回:str: 爬取结果的 Markdown 格式文本。"""import requestsimport timefrom typing import Dict, Any
# 设置 API 令牌,用于 API 认证    api_token = "xxxxxxxxxxx"  # 与 CRAWL4AI_API_TOKEN 设置的令牌相同# 如果设置了 API 令牌,则在请求头中添加认证信息headers = {"Authorization": f"Bearer {api_token}"} if api_token else {}
# 提交一个爬取任务response = requests.post("http://xxx.xxx.xxx.xxx:11235/crawl",# Crawl4AI API 的爬取端点headers=headers,json={"urls": query, "priority": 10}# 提交爬取请求,包含要爬取的 URL 和优先级)# 获取任务 IDtask_id = response.json()["task_id"]print(task_id)# 打印任务 ID,用于跟踪爬取任务
# 持续轮询直到任务完成(状态为 "completed")while True:# 获取任务状态result = requests.get(f"http://xxx.xxx.xxx.xxx:11235/task/{task_id}", headers=headers)status = result.json().get("status")if status == "completed":# 如果任务已完成print(status)# 打印任务状态break# 退出轮询循环time.sleep(1)# 如果任务未完成,等待 1 秒后再次检查
# 获取最终的爬取结果result = result.json()# 返回爬取结果的 Markdown 格式文本return result['result']['markdown']

在MaxKB的高级应用的编排使用,将获取的内容进行优化展示。

原文链接:
https://baijiahao.baidu.com/s?id=1747834446138459260&wfr=spider&for=pc

原文内容:


Crawl4AI 获取的内容:


MaxKB总结展示内容:


04 最后
由此可见,Crawl4AI 是一款专为LLM 应用打造的开源异步网页爬虫工具,凭借其卓越的性能和高度的灵活性,能够高效地抓取动态网页数据,生成适合LLM 处理的格式,助力轻松获取高质量数据!



53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询