微信扫码
添加专属顾问
我要投稿
如果用过网页获取工具的同学应该就会发现,传统的工具在处理大规模数据和动态网页时性能不足,无法高效加载和提取 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 asyncio
from 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 requests
import time
from 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 和优先级
)
# 获取任务 ID
task_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-03-09
为什么RAG系统要拥抱向量检索?揭示关键字检索的致命弱点!
2025-03-09
不要盲目再使用DeepSeek R1和QWQ这些推理模型做RAG了
2025-03-07
r1-reasoning-rag:一种新的 RAG 思路
2025-03-05
提高企业 RAG 准确性的分步指南
2025-03-05
DeepSeek-R1 x Agentic RAG:构建带"深度思考"开关的知识研究助理|深度长文
2025-03-05
通过Milvus内置Sparse-BM25算法进行全文检索并将混合检索应用于RAG系统
2025-03-05
本地部署DeepSeek R1 + Ollama + XRAG:三步搭建RAG系统,并解锁全流自动化评测
2025-03-05
Graph RAG 迎来记忆革命:“海马体”机制如何提升准确率?
2024-09-04
2024-10-27
2024-07-18
2024-05-05
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07
2025-03-05
2025-03-03
2025-03-02
2025-02-28
2025-02-24
2025-02-23
2025-02-15
2025-02-12