AnyCrawl:把网页变成 LLM 数据的抓取工具包
用 TypeScript 编写、可自托管的网页抓取工具包,以三种引擎覆盖静态页到 JS 渲染页,支持搜索结果批量采集、全站遍历与 LLM 结构化抽取,输出对大模型友好的数据。
项目资料
GitHub Ecosystem- 许可证
- MIT
- 主语言
- TypeScript
- 星标
- 3,460
- 核查时间
- 2026-09-25
以上快照资料以核查当日为准,可能随版本或运营策略变化。
做数据采集常会遇到取舍:静态页面想快,动态渲染页面又离不开真实浏览器环境。AnyCrawl 把这两类需求收进同一个工具包——这是一个用 TypeScript 编写、运行于 Node.js 的网页抓取项目,在快速静态解析与浏览器渲染两类引擎间按需选用,并把抓到的内容整理成 LLM 可直接使用的数据。GitHubDaily 曾在 2025 年 6 月推荐过它。
核心功能
- 三种抓取引擎:Scrape 接口内置 cheerio / playwright / puppeteer 三种引擎,静态 HTML 用 cheerio 直接解析、速度最快,需要 JavaScript 渲染的页面则交给后两者。
- 搜索结果采集:搜索接口 /v1/search 直接返回结构化结果,可设置翻页数量与语言参数;README 里支持列表目前只有 Google。
- 全站遍历与批量抓取:Crawl 可限制爬取深度、条数并限定同域;Batch Scrape 把多个已知 URL 作为异步作业一次提交,之后轮询进度、分页取回结果。
- LLM 结构化抽取:把 JSON Schema 写进 json_options 参数,大模型会照此从页面提炼结构化 JSON;模型服务可用 Atlas Cloud 这类 OpenAI 兼容产品。
- 多线程并发:以原生多线程/多进程提升批量任务吞吐,技术栈中还包含 Redis。
- 代理与缓存:每次请求可附带 HTTP/SOCKS 代理,缓存有效期与是否写入缓存都按请求控制。
典型使用场景
- 为 LLM 或 RAG 应用准备语料,把网页内容转换成 markdown 等模型友好的格式;
- 批量拉取 Google 搜索结果,做 SEO 分析或市场调研;
- 按深度与同域规则遍历整站,积累数据集或给站点做存档。
快速上手
可选择官方托管 API,也可以自己用 Docker 起一套服务自托管。自托管时先开启认证并生成 API Key:
docker compose exec api pnpm --filter api key:generate
随后调用接口抓取页面(自托管部署时把地址换成自己的服务器):
curl -X POST https://api.anycrawl.dev/v1/scrape \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ANYCRAWL_API_KEY" \
-d '{"url": "https://example.com", "engine": "cheerio"}'
小结
它面向的是需要批量网页与搜索数据的开发者和 AI 团队:以 Node.js 和 TypeScript 为主的技术栈、要为 RAG 应用准备语料的场景,都可以直接用它。项目采用 MIT 协议,仓库仍在活跃维护。几点客观的注意事项:搜索能力在 README 目前只写了 Google;自托管依赖 Redis,浏览器引擎要求 Node.js 版本不低于 20,首次使用会下载约 70MB 的 GeoIP 数据库;LLM 抽取功能还要自己配置兼容 OpenAI 接口的服务商与 API Key。整体来看,它的引擎分层设计让静态页与动态页各取所需,按需选择即可。