微信扫码
与创始人交个朋友
我要投稿
如果用过网页获取工具的同学应该就会发现,传统的工具在处理大规模数据和动态网页时性能不足,无法高效加载和提取 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-01-18
3种RAG方法深度对比!知识图谱为何让微软GraphRAG脱颖而出?
2025-01-18
RAG一周出Demo,半年上不了线,怎么破?
2025-01-17
教歪果仁整活:PostgreSQL与Milvus谁是多语言RAG最优解
2025-01-17
不要做RAG,CAG足以应对所有知识任务!
2025-01-17
RAG 系统完全指南:从基础到高级实践
2025-01-17
当 RAG 遇上 AI Agents: 7 种 Agentic RAG 系统架构
2025-01-17
9种不同类型的检索增强生成 (RAG)
2025-01-16
MiniRAG:一种轻量级检索增强生成方法
2024-07-18
2024-09-04
2024-05-05
2024-06-20
2024-07-09
2024-07-09
2024-05-19
2024-06-13
2024-07-07
2024-07-07
2025-01-18
2025-01-18
2025-01-13
2025-01-09
2025-01-09
2025-01-09
2025-01-06
2025-01-04