微信扫码
添加专属顾问
我要投稿
如果用过网页获取工具的同学应该就会发现,传统的工具在处理大规模数据和动态网页时性能不足,无法高效加载和提取 JavaScript 动态生成的内容,导致数据抓取速度慢且不完整。而以前我们也介绍过一个能够将网页内容转换成适合大型语言模型(LLMs)处理的格式的工具-Reader
一条命令能够将网页内容转换成适合任何大模型处理的格式,AI时代的检索增强,Star 6.6K!
但是Reader是个在线工具,提供的是SaaS服务,那么也就意味着需要联网使用,而且也有相应的调用限制。
所以,很多时候我们需要一个完全不限制使用,同时还能能够提取网页中的各种元素,包括文本、媒体文件(图片、视频、音频)、内外部链接和元数据的工具,而今天介绍的就是一个不输Reader,但是还能私有化部署的工具-Crawl4AI
? 项目信息
#github地址https://github.com/unclecode/crawl4ai#项目地址https://crawl4ai.com/mkdocs/
异步架构:采用异步编程技术,能够高效地同时处理多个网页请求,显著提高爬虫的效率和性能。
多格式输出:支持多种数据格式输出,包括 JSON、HTML 和 Markdown,方便与 AI 模型和其他数据处理工具集成。
全方位数据提取:能够提取网页中的文本、图片、视频、音频等多媒体数据,以及所有外部和内部链接和元数据。
高度定制化:提供自定义用户代理、请求头和页面修改的钩子功能,用户可以根据具体需求灵活设置爬虫行为。
多浏览器支持:兼容 Chromium、Firefox 和 WebKit 等多种浏览器,能够更好地模拟真实用户的浏览行为。
动态内容处理:支持执行自定义 JavaScript 脚本,能够处理动态加载的内容,确保全面的数据抓取。
会话管理:适用于复杂的多页面爬取场景,能够保持会话状态,实现多步骤的爬取任务。
高级提取策略:支持基于主题、正则表达式、句子等的分块策略,以及利用 LLM 或余弦聚类的高级提取策略,提高数据提取的准确性和效率。
02 Crawl4AI 安装
—
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安装和使用可参考以前的文章:
一个利用开源 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']
https://baijiahao.baidu.com/s?id=1747834446138459260&wfr=spider&for=pc
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-28
多少做RAG的人,连分词都搞不定? Milvus Analyzer指南
2025-10-28
先分块再向量化已经过时!先embedding再chunking才是王道
2025-10-28
AI检索增强中路由模型的使用
2025-10-28
HybRAG:混合文本和知识图谱的RAG框架
2025-10-28
“生成幻觉”(Hallucination)和“知识时效性”不足引发的架构范式变革
2025-10-27
RAG优化技巧
2025-10-26
关于RAG系统在多轮对话中的问题改写(优化)方法—使用历史记录改写问题
2025-10-26
你的RAG知识库,真的“喂”对数据了吗?拆解dify分段策略,告别无效召回
2025-09-15
2025-09-02
2025-08-05
2025-08-18
2025-08-25
2025-08-25
2025-08-25
2025-09-03
2025-08-20
2025-09-08
2025-10-04
2025-09-30
2025-09-10
2025-09-10
2025-09-03
2025-08-28
2025-08-25
2025-08-20