Crawlee 评测
由 Apify 团队打造的开源 Node.js 网络爬虫和抓取框架。提供一套完整工具包,用于构建具备自动重试、代理轮换和无头浏览器支持的可靠爬虫,全部运行在你自己的基础设施上。
76
RB
Runar BrøsteFounder & Editor
AI tools researcher and reviewer更新于 2026年3月
本周已更新免费版
最适合
- 希望完全掌控爬虫基础设施的开发者
- 需要最大灵活性构建自定义抓取管线的团队
- 偏好自托管方案的开源爱好者
- 将网络爬虫集成到现有 Node.js 应用的工程师
不适合的情况…
- 需要托管抓取服务的非技术用户
- 需要无需额外工作即可获得 LLM 优化 markdown 或结构化输出的团队
- 希望使用托管 API 而不管理服务器的用户
什么是 Crawlee?
Crawlee 是一个用于 Node.js 的开源网络爬虫和抓取库,由 Apify 背后的团队构建和维护。它提供了一个结构化框架,用于构建具备内置请求队列、自动重试、代理轮换以及 HTTP 和无头浏览器爬取支持的可靠网络爬虫。
该项目从 Apify 的内部爬取 SDK 演化而来,作为独立的开源库发布,旨在为开发者提供生产级爬取框架,无需依赖 Apify 平台。它支持三种爬取方式:使用 Cheerio 对静态页面进行轻量级 HTTP 爬取,使用 Playwright 对 JavaScript 密集型网站进行完整浏览器自动化,以及 Puppeteer 作为替代浏览器后端。
Crawlee 定位于特定细分市场:它是一个面向希望构建专业级基础设施内置自定义爬虫的开发者的框架。它不是托管服务,不是 API,也不是无代码工具。你用 TypeScript 或 JavaScript 编写爬取逻辑,Crawlee 负责可靠性工程,这正是让笔记本脚本和生产爬虫之间产生差异的关键。
核心功能
爬虫类是核心抽象。CheerioCrawler 无需启动浏览器即可高效处理静态 HTML 页面。PlaywrightCrawler 和 PuppeteerCrawler 为需要 JavaScript 渲染的网站启动无头浏览器。三者共享相同的请求处理、数据存储和错误管理接口,因此可以在它们之间切换而无需重写提取逻辑。
自动请求管理处理爬取中的繁琐部分。RequestQueue 确保 URL 恰好处理一次,以指数退避方式处理重试,并持久化状态以便恢复中断的爬取。RequestList 适用于预先有固定 URL 列表的简单场景。
代理轮换内置于框架中。你配置一个代理池,Crawlee 自动在代理间轮换、管理会话并淘汰失败的代理。可与 Apify 的代理服务集成,也适用于任何第三方代理提供商。
存储抽象提供了保存爬取数据的一致方式。Dataset 类存储提取的记录,KeyValueStore 处理任意键值对(如截图或配置)。默认情况下数据存储在本地文件系统,但可以切换到云存储后端。
开发工作流
典型的 Crawlee 项目从用 CLI 搭建新项目或直接安装包开始。根据目标网站要求选择爬虫类型(Cheerio、Playwright 或 Puppeteer),定义处理每个页面并提取数据的请求处理器,添加起始 URL。最简爬虫不到二十行代码即可运行。
对于更复杂的网站,开发周期包括针对实时页面测试选择器、处理分页和导航、管理需要登录网站的会话,以及构建数据提取管线。Crawlee 的 TypeScript 支持意味着整个过程都有类型检查和 IDE 自动补全,减少调试时间。
部署是自托管权衡变得明显的地方。你需要在自有基础设施上运行爬虫,无论是本地机器、云服务器还是容器编排平台。对于无头浏览器爬虫,还需要管理浏览器二进制文件及其资源需求。如果需要托管基础设施,Apify 平台可作为可选部署目标。
测试爬虫本质上很困难,因为你在与不断变化的实时网站交互。Crawlee 通过提供一致的日志记录、失败页面快照以及保存和回放请求序列的能力来提供帮助。但构建能适应网站变化的弹性爬虫的根本挑战仍然需要你自己解决。
谁应该使用 Crawlee?
需要构建生产级可靠性自定义网络爬虫的 Node.js 开发者是目标受众。如果你已经在 JavaScript 或 TypeScript 生态中工作,并且需要抓取没有现成解决方案的网站,Crawlee 为你提供了坚实的构建基础。
需要完全掌控爬取逻辑和基础设施的团队会欣赏 Crawlee 是一个库而非平台。你拥有代码、数据和部署的完全控制权。没有使用费、没有供应商锁定、没有超出基础设施承载能力的限制。
重视透明度的开源贡献者和开发者会发现一个拥有良好文档、定期发布和积极社区的活跃项目。代码库结构良好,欢迎贡献。
Crawlee 不适合需要托管抓取服务的非技术用户。它需要编写代码、管理基础设施,以及在网站更改标记时调试爬虫。如果你想要无需管理服务器即可调用的 API,Firecrawl 或 ScrapingBee 等工具是更简单的选择。如果你使用 Python,Crawlee 仅限 Node.js 的生态系统也是一个限制。
定价详解
Crawlee 在 MIT 许可证下完全免费开源。没有使用费、付费层级或功能限制。你可以零成本获得完整框架。
费用来自基础设施。运行爬虫需要计算资源,无头浏览器爬虫比基于 HTTP 的需要更多。普通云服务器可以处理许多爬取任务,但高并发的大规模操作需要相应更多的资源。如果目标网站需要 IP 轮换,还需要代理服务,这是持续的成本。
如果需要托管服务,Apify 平台可以将基于 Crawlee 的爬虫作为 Actor 运行,享有所有平台优势(调度、代理管理、数据存储)。这在免费框架之上增加了 Apify 的定价,起步价为每月 $49。
与托管抓取 API 相比,Crawlee 在规模化时更便宜,因为你只需支付基础设施费用而非按请求计费。与从头用原生 Playwright 或 Puppeteer 构建相比,Crawlee 免费且在基础设施层面节省了大量开发时间。
Crawlee 的横向比较
与 Apify(平台)相比,Crawlee 是自托管替代方案。你获得相同的爬取框架,但没有托管平台、市场或代理基础设施。Crawlee 以更多运营工作换取更大控制权和更低成本。许多开发者从 Crawlee 开始,在需要托管基础设施时迁移到 Apify,或本地开发用 Crawlee、生产部署用 Apify。
与 Scrapy(Python)相比,两者都是开源爬取框架,但针对不同生态系统。Scrapy 是拥有大型插件生态的 Python 开发者的成熟选择。Crawlee 较新,但提供 Scrapy 原生缺乏的一流浏览器自动化支持(Playwright/Puppeteer)。如果你使用 JavaScript,Crawlee 是明确的选择;如果你使用 Python,Scrapy 更成熟。
与直接使用原生 Playwright 或 Puppeteer 相比,Crawlee 增加了基础设施层:请求队列、重试、代理轮换和存储。直接使用 Playwright 提供更大灵活性,但需要自己构建这些功能。对于任何超出简单脚本的工作,Crawlee 内置的基础设施节省了可观的开发时间。
总结
Crawlee 是 Node.js 生态中最佳的开源爬取框架。它将 Apify 多年大规模运行爬虫积累的可靠性模式打包成设计精良的库。自动重试、代理轮换和请求管理解决了每个认真的爬虫最终都需要处理的问题。
主要限制是自托管要求和 Node.js 锁定。你需要基础设施来运行爬虫,需要 DevOps 知识来保持其运转,以及在目标网站更改时调试的意愿。没有 Python SDK,这排除了数据工程社区的相当一部分人。
对于构建自定义爬虫的 JavaScript 和 TypeScript 开发者,Crawlee 是强有力的起点。它不会消除网络抓取固有的难度,但会处理基础设施方面的问题,让你专注于用例特有的提取逻辑。
定价
完全免费开源(MIT 许可证)。在自有基础设施上自托管。可选通过 Apify 平台使用付费托管服务。
Free提供免费版
优点
- MIT 许可证下完全免费开源
- 高度灵活的架构,支持 Cheerio、Playwright 和 Puppeteer 爬虫
- 内置自动重试、请求队列和代理轮换,确保抓取可靠性
- 庞大活跃的社区,拥有完善的文档和示例
- 需要时可部署到 Apify 平台进行托管
缺点
- 需要自托管和 DevOps 工作才能在生产环境运行
- 没有托管 API 端点;需要自行构建和部署服务
- 默认不生成 LLM 就绪的 markdown 或结构化数据
- 与托管抓取 API 相比初始配置更复杂
- 仅限 Node.js 生态系统,无官方 Python 或 Go 支持
平台
api
最后验证: 2026年3月30日