crawlee
AI 时代的数据采集瑞士军刀,支持 HTTP/Playwright/Puppeteer 多引擎,让爬
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI 时代的数据采集瑞士军刀,支持 HTTP/Playwright/Puppeteer 多引擎,让爬
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你需要从某个电商平台抓取 10 万个商品的价格数据——传统方法写几行 Python 脚本,看似简单,但很快就会遇到网站反爬机制:IP 被封、请求被拦截、页面结构一变代码就报错。 这几乎是所有数据工程师和数据科学家的噩梦。而 Crawlee 正是为了解决这个问题而生的。
Crawlee 是由知名爬虫平台 Apify 开源的一个 Node.js 网络爬虫与浏览器自动化库,GitHub 星标超过 2.3 万,是该领域最受欢迎的开源项目之一。
图1:Crawlee 是 Apify 旗下的核心开源爬虫框架,支持 TypeScript/JavaScript 全栈开发
很多人可能会有疑问:爬虫和 AI 有什么关系?事实上,AI 模型的训练和推理都需要海量数据,而互联网上有大量数据并没有现成的 API 接口。以大语言模型为例,很多用于训练的高质量文本来自网页抓取;而在 RAG(检索增强生成)架构中,企业往往需要从内部网站、知识库中提取数据来扩充模型的知识储备——这些都是爬虫的用武之地。
Crawlee 的设计哲学正是面向 AI 场景的:它不仅能抓取静态 HTML,还能处理 JavaScript 渲染的单页应用(SPA),支持 PDF、图片等文件的下载,还能与 Playwright、Puppeteer 等无头浏览器深度集成,为 AI 应用提供稳定的数据管道。
Crawlee 提供了多层次的爬虫方案,开发者可以根据目标网站的复杂度选择合适的工具:
1. CheerioCrawler —— 轻量级 HTTP 爬虫
适用于结构简单、不依赖 JavaScript 渲染的网站。Cheerio 是 Node.js 中最快的 HTML 解析库之一,Crawlee 的 CheerioCrawler 在此基础上加入了自动重试、代理轮换、请求去重等企业级功能,速度极快,资源占用极低,是批量抓取新闻、论坛、商品列表等结构化数据的首选。
2. PlaywrightCrawler / PuppeteerCrawler —— 浏览器级爬虫
针对需要 JavaScript 渲染的现代 Web 应用(如 React/Vue 构建的 SPA),Crawlee 封装了 Playwright 和 Puppeteer,提供统一的 API 接口。最值得关注的是 Adaptive PlaywrightCrawler——它能根据目标网站的响应速度自动调整并发策略,在保证稳定性的同时最大化抓取效率。
图2:PlaywrightCrawler 提供实时抓取进度仪表盘,直观展示抓取状态
图3:可深入查看单次请求的详细信息,包括响应时间、截图和 HTML 内容
3. HTTPXCrawler —— 增强型 HTTP 爬虫
介于轻量和浏览器之间,支持更复杂的 HTTP 行为模拟,如 Cookie 处理、重定向跟随、TLS 指纹定制等,适合有一定反爬对抗需求的场景。
智能代理轮换:内置代理配置管理,支持多种代理服务商,自动轮换 IP,避免被目标网站封禁。
自动扩缩容:Crawlee 会根据目标网站的响应时间和错误率自动调整并发请求数量,在火力全开和保持低调之间找到平衡点,既不会因为速度太快被封,也不会因为速度太慢浪费时间。
图4:Crawlee 的无头浏览器模式可完整渲染 JavaScript,捕获异步加载的内容
数据存储一体化:抓取的数据可以直接写入本地文件系统(JSON、CSV、HTML)、Amazon S3 或自定义存储后端,打通了从采集到存储的全流程。
图5:Crawlee 代码示例——使用 TypeScript 定义抓取逻辑,类型安全且易于维护
Crawlee 是一个 monorepo 项目,使用 Lerna + Yarn Workspaces 管理多包结构,核心包如下:
| 包名 | 功能 |
|---|---|
| @crawlee/core | 核心引擎:调度器、队列、存储 |
| @crawlee/cheerio | Cheerio 解析器封装 |
| @crawlee/playwright | Playwright 集成 |
| @crawlee/puppeteer | Puppeteer 集成 |
| @crawlee/browser | 通用浏览器操作封装 |
| @crawlee/cli | 命令行工具 |
项目使用 TypeScript 从头编写,全面支持类型提示,这对于需要在大型项目中维护爬虫代码的团队来说非常重要。构建系统采用 Vitest 做测试、Turborepo 做增量构建,代码质量管控到位。文档站基于 Docusaurus 构建,提供多语言文档(英/中/德/俄等),是开源项目中文档质量较高的代表。
安装 Crawlee 只需要一行命令:
npx crawlee create my-crawler
cd my-crawler
npm install
npm start
Crawlee CLI 会自动生成项目模板,包含完整的抓取逻辑、数据存储配置和日志输出。TypeScript 类型定义完整,IDE 智能提示体验良好。
Crawlee 本身是一个 CLI 工具包,没有独立的 Web UI 界面,所有操作通过代码完成。对于有 Node.js / TypeScript 经验的开发者来说,上手非常平滑;对于纯 Python 背景的开发者,Apify 也提供了 Crawlee for Python 作为姊妹项目,API 设计风格与 Node.js 版本保持一致。
Crawlee 面向的是合法、受控的网络爬取场景。对于目标网站明确禁止爬取的内容,Crawlee 本身无法绕过这些限制,仍需遵守 robots.txt 和目标网站的 ToS。
此外,由于依赖 Playwright/Puppeteer 等无头浏览器,Crawlee 的资源消耗相对纯 HTTP 方案较高,在大规模分布式部署时需要配合 Docker 或 Kubernetes 来管理容器化。
Crawlee 不仅是 Apify 商业产品的技术底座,更是 Node.js 生态中爬虫领域的标杆项目。它将原本只有大型科技公司才能做到的企业级爬虫能力,以开源形式免费提供给社区,降低了 AI 数据准备的门槛。截至 2025 年中,项目保持活跃维护(最新版本 v3.13.9 发布于 2025 年 6 月),持续跟进 Playwright、Puppeteer 等上游依赖的更新。
对于想构建 AI 数据管道的开发者而言,Crawlee 提供了从数据采集、清洗到存储的一站式解决方案;对于研究爬虫对抗技术的安全工程师而言,Crawlee 的架构设计也是理解现代反爬/反反爬博弈的绝佳范本。
一句话总结:Crawlee 是 AI 时代数据采集的瑞士军刀,让复杂的网络爬取变得可靠、可维护。