【本文是 AI 生成,并由 AI 自动发布。本次是实验,后面会总结如何实现。】
Firecrawl 简介
Firecrawl 是一个强大的网络爬虫和数据提取工具,能够将任意网站转换为结构化数据。对于需要频繁抓取网页数据的开发者来说,本地部署 Firecrawl 可以更好地控制数据隐私和成本。本文将详细介绍如何使用 Docker 在本地快速部署 Firecrawl。
Firecrawl 提供了简单易用的 API,支持:
- 自动爬取整个网站
- 提取结构化数据(Markdown、HTML、截图等)
- 处理 JavaScript 渲染的页面
- 批量抓取和过滤
使用 Docker 部署可以避免环境依赖问题,一键启动,非常适合开发和测试环境。
前置条件
在开始之前,请确保你的系统已安装:
- Docker(20.10+)
- Docker Compose(V2 推荐)
检查安装:
docker --version
docker compose version
Docker Compose 部署
创建项目目录
mkdir firecrawl && cd firecrawl
创建 docker-compose.yml
services:
firecrawl:
image: mendableai/firecrawl:latest
container_name: firecrawl
ports:
- "3000:3000"
environment:
- PORT=3000
- API_KEY=your-secret-key-here # 可选:设置API密钥
- LOG_LEVEL=info
volumes:
- ./data:/app/data # 持久化数据
restart: unless-stopped
配置说明:
ports: 将容器 3000 端口映射到宿主机API_KEY: 可选,用于保护 API(不设置则无需认证)volumes: 持久化存储抓取的数据
启动服务
docker compose up -d
查看运行状态:
docker compose ps
docker compose logs -f
验证安装
访问以下地址确认服务正常运行:
如果看到 JSON 响应 "status":"ok",说明部署成功。
基本使用
简单爬取
# 爬取单个URL,返回Markdown
curl -X POST http://localhost:3000/v1/crawl \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"formats": ["markdown"]
}'
批量爬取
curl -X POST http://localhost:3000/v1/crawl \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"limit": 10,
"formats": ["markdown", "html", "screenshot"]
}'
提取结构化数据
curl -X POST http://localhost:3000/v1/crawl \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"prompt": "提取页面中的所有产品名称和价格",
"schema": {
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"price": {"type": "string"}
}
}
}
}
}
}'
Python 调用示例
import requests
response = requests.post(
"http://localhost:3000/v1/crawl",
json={
"url": "https://example.com",
"formats": ["markdown"]
}
)
print(response.json())
常见问题
端口冲突
如果 3000 端口被占用,修改 docker-compose.yml 中的端口映射:
ports:
- "8080:3000" # 使用 8080
容器启动失败
检查日志:
docker compose logs firecrawl
常见原因:
- Docker 内存不足(建议至少 2GB)
- 网络问题导致镜像拉取失败
爬取速度慢
调整并发限制(在请求中添加 maxConcurrent 参数):
{
"url": "https://example.com",
"maxConcurrent": 5
}
数据持久化
确保 volumes 配置正确,数据会保存在 ./data 目录:
ls -la data/
进阶配置
自定义网络
networks:
firecrawl-net:
driver: bridge
services:
firecrawl:
networks:
- firecrawl-net
设置资源限制
services:
firecrawl:
deploy:
resources:
limits:
memory: 2G
cpus: '2.0'
HTTPS 反向代理
使用 Nginx 或 Traefik 提供 HTTPS 访问:
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
}
安全建议
- 启用 API_KEY:生产环境务必设置
API_KEY环境变量 - 限制访问 IP:通过防火墙或反向代理限制访问来源
- 定期更新镜像:
docker compose pull docker compose up -d - 监控日志:定期检查日志文件,发现异常请求
卸载与清理
停止并移除容器:
docker compose down
删除数据(谨慎操作):
rm -rf data/
总结
通过 Docker 部署 Firecrawl 只需几个步骤,即可快速搭建一个功能完整的网页爬虫服务。无论是个人项目还是企业应用,这种容器化方案都能提供良好的隔离性和可移植性。
关键要点:
- ✅ 使用
docker-compose.yml简化部署 - ✅ 通过
volumes持久化数据 - ✅ REST API 支持多种输出格式
- ✅ 可扩展性强,适合二次开发
现在就试试在你的本地环境启动 Firecrawl 吧!
参考资源:
