any4ai/AnyCrawl
AnyCrawl 🚀: A Node.js/TypeScript crawler that turns websites into LLM-ready data and extracts structured SERP results from Google/Bing/Baidu/etc. Native multi-threading for bulk processing.
AnyCrawl – 支持 LLM 结构化提取的高速、可扩展 Web 与 SERP 爬取
是什么
AnyCrawl 是一个基于 Node.js + TypeScript 的开源工具包,用于高性能 Web 爬取、站点抓取和搜索引擎结果(SERP)获取。它集成了多线程/多进程工作器、可选的 Redis 缓存,以及内置的 LLM 驱动结构化数据提取(JSON 模式)。该服务可自托管,也可通过 api.anycrawl.dev 的公共 API 使用。
核心功能
| 功能 | 详情 |
|---|---|
| SERP 爬取 | 查询 Google(目前唯一支持的引擎),获取分页结果。 |
| Web 抓取 | 获取单个 URL,支持三种引擎:cheerio(快速静态 HTML)、playwright 或 puppeteer(完整 JavaScript 渲染)。 |
| 站点爬取 | 支持深度限制、域名范围的遍历,可配置限制和路径过滤器。 |
| 批量任务 | 提交 URL 列表进行异步批量抓取;轮询状态并获取结果。 |
| LLM 提取 | 在抓取请求中附加 json_options.schema;AnyCrawl 将页面内容转发给 OpenAI 兼容的 LLM(如 Atlas Cloud),并返回结构化 JSON。 |
| 代理支持 | 支持请求级 proxy 参数或全局 ANYCRAWL_PROXY_URL;提供默认代理,并附带住宅代理赞助链接。 |
| 可扩展性 | 工作器可在多个线程或进程中运行;Docker 镜像预装 CloakBrowser 二进制文件,实现浏览器高效复用。 |
| 缓存 | 可选 Redis 或 S3 后端缓存,避免重复下载未更改的页面。 |
| API 优先 | 所有功能均通过 REST API 暴露(/v1/scrape、/v1/crawl、/v1/search、/v1/batch/scrape)。 |
典型用例
- LLM 训练或 RAG 的数据收集 – 收集原始网页内容,使用内置模式提取功能生成可索引的干净 JSON。
- 搜索引擎监控 – 定期抓取关键词集的 Google SERP 结果。
- 大规模 Web 抓取流水线 – 结合批量任务、Redis 缓存和多进程工作器实现高吞吐量。
- 需要最新网页内容的 AI 代理 – 从自主代理调用 API,可选择通过住宅代理路由以避免被机器人拦截。
快速上手
- 试用托管 API – 从 AnyCrawl 仪表板获取免费 API 密钥,直接调用端点(参见 README 示例)。
- 自托管 – 克隆仓库,运行
docker compose up -d(或本地启动api服务)。- 生成密钥:
pnpm --filter api key:generate(或通过docker exec)。 - 设置环境变量如
ANYCRAWL_API_AUTH_ENABLED=true及可选的代理/Redis 设置。
- 生成密钥:
- 运行简单抓取:
curl -X POST https://api.anycrawl.dev/v1/scrape \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <YOUR_KEY>' \ -d '{"url":"https://example.com","engine":"cheerio"}' - 添加 LLM 提取 – 在请求体中包含
json_options.schema;通过环境变量(DEFAULT_LLM_MODEL、ATLASCLOUD_API_KEY)配置 OpenAI 兼容提供者(如 Atlas Cloud)。
文档与社区
- 完整 API 参考与快速入门指南: https://docs.anycrawl.dev
- 交互式测试平台: https://anycrawl.dev/playground
- 欢迎贡献(详见
CONTRIBUTING.md)。 - 支持者可通过 Open Collective 支持本项目。
许可证 MIT – 宽松的开源许可证。
总结 AnyCrawl 提供了一个开箱即用、生产级的爬取/抓取服务,可无缝集成到 LLM 工作流中,是 AI 驱动数据管道、自主代理和 RAG 系统的实用构建模块。
相关
- 项目
- 项目
- 项目
- 项目