AnyCrawl 是一个高性能的网站爬取与抓取工具包
部署教程:AnyCrawl
1. 准备工作与环境要求
无论选择哪种方式,请先确保你的系统满足以下基本要求:
- 操作系统:macOS 或 Linux(Ubuntu/Debian 等)。Windows 可通过 WSL2 支持。
- 核心工具:
- Git:用于克隆仓库。
- Node.js: 版本 20 或更高。AnyCrawl 基于 Node.js/TypeScript 构建。
- 包管理器: pnpm。项目使用 pnpm workspace 进行管理。
- Docker 和 Docker Compose:版本 20.10 和 2.0 或更高(如果选择 Docker 方式)。
2. 方式一:使用 Docker 部署(推荐)
这是最快捷的方式,AnyCrawl 提供了预构建的 Docker 镜像。
克隆仓库(可选)
虽然可以直接拉取镜像,但为了配置方便,建议克隆仓库以获取示例配置文件。1
2git clone https://github.com/any4ai/anycrawl.git
cd anycrawl配置环境变量(关键步骤)
创建.env文件来配置服务。你可以基于.env.example来创建。1
cp .env.example .env
编辑
.env文件,至少需要关注以下核心变量:变量名 描述 示例值 ANYCRAWL_API_PORTAPI 服务端口 8080ANYCRAWL_API_AUTH_ENABLED是否启用 API 认证 true(生产环境建议开启)ANYCRAWL_REDIS_URLRedis 连接地址 redis://redis:6379ANYCRAWL_HEADLESS浏览器引擎是否无头运行 true配置LLM提供商(用于AI提取):
如果需要使用AI提取结构化JSON功能,需要配置LLM提供商。AnyCrawl支持OpenAI兼容的API,例如Atlas Cloud。1
2
3
4
5# 以 Atlas Cloud 为例
ATLASCLOUD_BASE_URL=https://api.atlascloud.ai/v1
ATLASCLOUD_API_KEY=你的AtlasCloud_API_Key
DEFAULT_LLM_MODEL=atlascloud/deepseek-v3
DEFAULT_EXTRACT_MODEL=atlascloud/deepseek-v3启动服务
使用 Docker Compose 一键启动所有相关服务(API, Redis, 及各种抓取引擎)。1
docker-compose up -d
这会以后台模式启动服务。首次启动可能需要拉取镜像,请耐心等待。
验证部署
检查服务是否正常运行。1
2curl http://localhost:8080/health
# 应返回 ok你也可以通过访问
http://localhost:8080来查看 API 是否响应。生成 API 密钥(如果启用了认证)
如果设置了ANYCRAWL_API_AUTH_ENABLED=true,你需要生成一个 API 密钥才能调用 API。1
2
3
4# 在运行中的 api 容器内执行
docker compose exec api pnpm --filter api key:generate
# 或为密钥命名
docker compose exec api pnpm --filter api key:generate -- default命令会打印出
uuid、key和credits。请保存好这个key,后续调用 API 时需要作为 Bearer Token 使用。
3. 方式二:从源码部署(开发/定制)
如果你需要对 AnyCrawl 进行二次开发或定制,可以选择从源码部署。
克隆仓库并安装依赖
1
2
3git clone https://github.com/any4ai/anycrawl.git
cd anycrawl
pnpm install构建项目
1
pnpm build
配置环境
同样需要创建.env文件进行配置,参考方式一中的步骤2。启动开发服务
1
2
3# 启动 API 服务
pnpm --filter api dev
# 其他服务(如 scrape engines)需要在各自的包中启动源码部署更复杂,涉及多个微服务,建议参考项目中的
docker-compose.yml文件来理解完整的服务架构。
4. 基本使用示例
部署成功后,可以通过 API 进行调用。以下示例假设你部署在本地 8080 端口,且未启用认证。
1. 抓取单个页面(Scrape)
1 | curl -X POST http://localhost:8080/v1/scrape \ |
engine: 可选cheerio(最快,静态HTML),playwright(支持JavaScript渲染),puppeteer(Chrome引擎)。formats: 输出格式,如markdown,html,json,screenshot等。
2. 带LLM提取的结构化数据抓取
1 | curl -X POST http://localhost:8080/v1/scrape \ |
注意:使用 json_options 时,formats 数组中必须包含 "json",否则响应中不会返回提取的JSON数据。
3. 爬取整个网站(Crawl)
1 | curl -X POST http://localhost:8080/v1/crawl \ |
这会创建一个异步爬取任务,返回一个 job_id,你可以通过轮询 /v1/crawl/{job_id}/status 来获取结果。
5. 重要配置与注意事项
- 代理配置:AnyCrawl 支持灵活的代理配置,可以通过环境变量
ANYCRAWL_PROXY_URL设置全局代理,或通过ANYCRAWL_PROXY_CONFIG文件设置基于URL规则的代理路由。 - 认证与安全:生产环境务必启用
ANYCRAWL_API_AUTH_ENABLED=true并使用key:generate命令创建强密钥。 - 数据持久化:Docker 部署默认使用 SQLite 作为数据库,数据库文件位于容器内。如需持久化,请挂载卷或配置使用 PostgreSQL。
- 性能与资源:对于大规模抓取任务,建议监控内存和CPU使用情况,并考虑使用
ANYCRAWL_PROXY_URL配置代理池来避免IP被封禁。 - 浏览器引擎:在 Apple Silicon (ARM64) 架构上使用 Docker 时,
puppeteer引擎可能不被支持,可以设置platform: linux/amd64或使用playwright引擎。



