Crawl4AI Docker部署:FastAPI服务器与Playground界面
快速开始:3分钟部署指南
你是否还在为网页爬取工具的复杂配置而烦恼?是否需要一个开箱即用的网页内容提取解决方案?本文将带你通过Docker快速部署Crawl4AI的FastAPI服务器与交互式Playground界面,无需复杂环境配置,3分钟即可拥有强大的网页爬取能力。
读完本文后,你将能够:
- 使用Docker一键部署Crawl4AI服务
- 通过直观的Playground界面配置爬取任务
- 掌握基础与高级API调用方法
- 了解MCP协议集成与扩展能力
环境准备
部署前请确保你的系统已安装:
- Docker 20.10.0+(包含
docker compose) - Git(用于克隆仓库)
- 至少4GB可用内存
验证Docker安装:运行
docker info命令检查Docker是否正常运行
三种部署方式任选
方式一:使用Docker镜像仓库预构建镜像(推荐)
这是最简单快捷的部署方式,直接拉取官方预构建镜像:
# 拉取最新发布候选版本(包含最新特性)
docker pull unclecode/crawl4ai:0.7.0-r1
# 或者拉取稳定版本(0.6.0)
docker pull unclecode/crawl4ai:latest
启动容器
基本启动(无LLM支持):
docker run -d \
-p 11235:11235 \
--name crawl4ai \
--shm-size=1g \
unclecode/crawl4ai:0.7.0-r1
带LLM支持启动:
- 首先创建
.llm.env文件:
cat > .llm.env << EOL
# OpenAI
OPENAI_API_KEY=sk-your-key
# Anthropic
ANTHROPIC_API_KEY=your-anthropic-key
EOL
- 启动容器并挂载环境变量文件:
docker run -d \
-p 11235:11235 \
--name crawl4ai \
--env-file .llm.env \
--shm-size=1g \
unclecode/crawl4ai:0.7.0-r1
服务启动后,访问 http://localhost:11235 即可使用
方式二:使用Docker Compose
适合开发环境或需要自定义配置的场景:
- 克隆仓库:
git clone https://example.com/GitHub_Trending/craw/crawl4ai
cd crawl4ai
- 配置环境变量:
cp deploy/docker/.llm.env.example .llm.env
# 编辑.llm.env添加你的API密钥
- 启动服务:
# 使用Docker镜像仓库镜像
IMAGE=unclecode/crawl4ai:0.7.0-r1 docker compose up -d
# 或本地构建并启动
docker compose up --build -d
方式三:手动本地构建
适合需要深度定制的高级用户:
# 克隆仓库
git clone https://example.com/GitHub_Trending/craw/crawl4ai
cd crawl4ai
# 构建镜像
docker buildx build -t crawl4ai-local:latest --load .
# 启动容器
docker run -d \
-p 11235:11235 \
--name crawl4ai-standalone \
--shm-size=1g \
crawl4ai-local:latest
认识Playground界面
服务启动后,访问 http://localhost:11235/playground 即可打开交互式操作界面。Playground界面位于deploy/docker/static/playground/index.html,提供以下核心功能:
- 直观的配置面板:可通过表单设置所有爬取参数,无需手动编写JSON
- 实时预览:即时查看爬取配置对应的JSON结构
- 一键测试:直接在界面中发起爬取请求并查看结果
- 代码生成:自动生成Python、JavaScript等语言的API调用代码
Playground使用流程
- 在URL输入框中填写目标网址(如
https://httpbin.org/html) - 配置浏览器参数(无头模式、视口大小等)
- 设置爬取参数(缓存模式、提取策略等)
- 点击"Run Crawl"按钮执行爬取
- 在结果面板查看爬取结果(HTML、Markdown或提取的结构化数据)
API调用详解
基础API请求
Crawl4AI提供RESTful API接口,支持多种爬取需求:
简单爬取请求
import requests
# 配置参数
browser_config = {
"type": "BrowserConfig",
"params": {"headless": True}
}
crawler_config = {
"type": "CrawlerRunConfig",
"params": {"stream": False, "cache_mode": "bypass"}
}
payload = {
"urls": ["https://httpbin.org/html"],
"browser_config": browser_config,
"crawler_config": crawler_config
}
# 发送请求
response = requests.post(
"http://localhost:11235/crawl",
json=payload
)
# 处理响应
if response.ok:
print(response.json())
else:
print(f"Error: {response.text}")
流式爬取请求
对于需要处理多个URL或大型页面的场景,流式API可以逐步返回结果:
import json
import httpx
import asyncio
async def stream_crawl():
url = "http://localhost:11235/crawl/stream"
payload = {
"urls": [
"https://httpbin.org/html",
"https://httpbin.org/links/5/0"
],
"browser_config": {
"type": "BrowserConfig",
"params": {"headless": True}
},
"crawler_config": {
"type": "CrawlerRunConfig",
"params": {"stream": True, "cache_mode": "bypass"}
}
}
async with httpx.AsyncClient() as client:
async with client.stream("POST", url, json=payload) as response:
async for line in response.aiter_lines():
if line:
try:
data = json.loads(line)
if data.get("status") == "completed":
print("Stream completed.")
break
print(f"Received data from {data.get('url')}")
except json.JSONDecodeError:
print(f"Could not decode: {line}")
asyncio.run(stream_crawl())
高级API功能
截图功能
{
"url": "https://example.com",
"screenshot_wait_for": 2,
"output_path": "/path/to/screenshot.png"
}
请求端点:POST /screenshot
PDF导出
{
"url": "https://example.com",
"output_path": "/path/to/document.pdf"
}
请求端点:POST /pdf
JavaScript执行
{
"url": "https://example.com",
"scripts": [
"return document.title",
"return Array.from(document.querySelectorAll('a')).map(a => a.href)"
]
}
请求端点:POST /execute_js
MCP协议集成
Crawl4AI支持Model Context Protocol (MCP),可直接与AI模型集成,提供更强大的上下文感知能力。
MCP连接方式
Crawl4AI提供两种MCP连接端点:
- Server-Sent Events (SSE):
http://localhost:11235/mcp/sse - WebSocket:
ws://localhost:11235/mcp/ws
与Claude Code集成
# 添加Crawl4AI作为MCP提供者
claude mcp add --transport sse c4ai-sse http://localhost:11235/mcp/sse
# 验证连接
claude mcp list
通过MCP,AI模型可直接使用Crawl4AI的所有功能,包括:
md- 从网页内容生成Markdownhtml- 提取预处理的HTMLscreenshot- 网页截图pdf- 生成PDF文档execute_js- 执行JavaScript代码crawl- 多URL爬取
服务器配置与优化
Crawl4AI服务器配置文件位于deploy/docker/config.yml,可通过以下方式自定义:
配置文件主要选项
# 应用配置
app:
title: "Crawl4AI API"
port: 8020 # 内部端口,外部通过Docker映射
# LLM默认配置
llm:
provider: "openai/gpt-4o-mini" # 默认LLM提供者
api_key_env: "OPENAI_API_KEY" # 环境变量名称
# 爬虫配置
crawler:
memory_threshold_percent: 95.0 # 内存阈值百分比
rate_limiter:
base_delay: [1.0, 2.0] # 请求间延迟范围(秒)
# 安全配置
security:
enabled: false # 安全功能总开关
jwt_enabled: false # JWT认证开关
自定义配置方法
推荐使用Docker挂载方式覆盖默认配置:
docker run -d \
-p 11235:11235 \
--name crawl4ai \
-v ./my-config.yml:/app/config.yml \
--shm-size=1g \
unclecode/crawl4ai:0.7.0-r1
监控与维护
健康检查
curl http://localhost:11235/health
健康检查返回状态为ok表示服务正常运行。
性能指标
访问 http://localhost:11235/metrics 获取详细的Prometheus指标,包括:
- 请求成功率
- 平均响应时间
- 内存使用情况
- 爬虫队列长度
停止与更新服务
# 停止服务
docker stop crawl4ai && docker rm crawl4ai
# 更新镜像并重启(保持数据)
docker pull unclecode/crawl4ai:0.7.0-r1
docker run -d \
-p 11235:11235 \
--name crawl4ai \
--env-file .llm.env \
--shm-size=1g \
unclecode/crawl4ai:0.7.0-r1
总结与进阶
通过本文介绍的方法,你已经成功部署了Crawl4AI的Docker服务并了解了基本使用方法。以下是一些进阶方向:
- 深入学习提取策略:探索docs/examples/extraction_strategies_examples.py中的高级提取技巧
- 定制爬虫行为:通过deep_crawling/模块实现复杂爬取逻辑
- 扩展API功能:修改deploy/docker/server.py添加自定义端点
- 集成到工作流:使用script/目录中的脚本模板自动化爬取任务
Crawl4AI持续更新中,关注项目ROADMAP.md了解即将发布的新功能。如有问题或建议,欢迎通过项目CONTRIBUTORS.md中的方式参与贡献。
提示:定期访问docs/目录获取最新文档和示例
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



