25k Star 的 Crawlee 依然是 Node.js 爬虫的首选方案,v3.18.0 带来了什么

过去一周,GitHub 上一个 TypeScript 爬虫框架悄悄更新到了 v3.18.0——你没看错,2026年8月4日刚发版。而它的 Star 数在同期悄然突破了 25,338,过去一年多时间一直维持在爬虫类目的头部位置。

这个框架叫 Crawlee,来自 Apify——一家专门做网页数据采集平台的公司。

什么是 Crawlee?

Crawlee 是一个 Node.js 上的网页爬取与浏览器自动化库,官方定位是”帮你构建可靠爬虫”。它脱胎于 Apify 多年做爬虫基础设施的经验,核心特点是统一的抽象层:不管你是抓静态页面还是渲染型 SPA,用同一套写法和数据模型应对。

# 快速创建一个新爬虫项目
npx crawlee create my-crawler
cd my-crawler
node main.js

它目前支持四种底层引擎:

  • CheerioCrawler:基于 HTTP 请求 + Cheerio 解析,速度快,适合不需要 JS 渲染的静态站
  • JSDOMCrawler:无头渲染但不启动完整浏览器,适合 Vue/React 生成的页面
  • PlaywrightCrawler:Puppeteer 的替代方案,支持无头/有头模式,社区更活跃
  • PuppeteerCrawler:老牌方案,部分场景仍有不可替代性

此外,它还提供代理轮换、自动重试、请求队列、URL 去重等开箱即用的工程能力,这些在原生 Puppeteer/Playwright 里都需要自己造轮子。

它在 2026 年解决了一个真实问题

知乎上有个帖子讨论”网络爬虫用什么编程语言好”,有个回答很实在:如果你要临时解决一个数据采集问题,Crawlee/PulsarR 这类开箱即用的方案是首选,”解决了阻挡在你和网页数据之间的绝大多数拦路虎”。但如果你是专业爬虫工程师,要做每日百万级的竞品监测,那确实需要更重的方案。

这个判断到今天依然准确——Crawlee 瞄准的正是中间这个地带:开发者需要快速可靠地采集网页数据,不想花时间处理反爬、代理、浏览器崩溃。

今年2月,Crawlee 正式将 adaptive crawling(自适应爬取)列为产品路线图项,简单说就是让爬虫自己判断目标页面是静态还是动态的,然后自动选择最优的抓取策略,不再需要人工判断用 Cheerio 还是 Playwright。

更值得注意的是 v3.16.0 里引入的 @crawlee/stagehand:这是 AI 驱动浏览器自动化的实验模块,可以理解自然语言指令,让爬虫”看你让它做什么”而不是”看你让它抓哪个元素”。这是和 LLM/RAG 工作流深度整合的方向。

真实数据

指标 数值
GitHub Stars 25,338
Forks 1,612
Open Issues 148
最近版本 v3.18.0(2026-08-04)
License Apache-2.0
官网 https://crawlee.dev

v3.18.0 修复了 enqueueLinksByClickingElements 的 clickOptions 兼容问题,v3.17.0修了 sitemap 发现可能无限挂起的问题——都是生产环境里真实会遇到的坑。

适合谁 / 不适合谁

适合:

  • 需要快速构建可靠爬虫的 Node.js/TypeScript 开发者
  • 正在做 AI/RAG 数据 pipeline,需要抓取大量网页文本的项目
  • 有反爬应对需求,不想从零写代理池和请求重试逻辑的团队
  • 已在用 Playwright/Puppeteer,想减少维护负担的开发者

不适合:

  • 追求极限性能、已有成熟 Scrapy 体系的大规模爬虫团队(Python 生态更适合)
  • 需要采集深网/Tor 暗网等特殊网络(目前没有内置支持,GitHub 上有用户提过 Feature Request)
  • 只是偶尔抓一个页面,直接 requests + BeautifulSoup 更快

怎么快速上手

# 安装
npm install crawlee

# 写一个最简单的爬虫
import { CheerioCrawler } from 'crawlee';

const crawler = new CheerioCrawler({
  async requestHandler({ page, request }) {
    const title = await page.title();
    console.log(`抓取成功: ${request.url} → ${title}`);
  },
});

await crawler.run(['https://news.ycombinator.com/']);

官方文档在 https://crawlee.dev/docs,示例覆盖了代理设置、登录态处理、文件下载等常见场景,比很多同类文档写得更细

竞品简评

和同类方案对比:Crawlee 相比原生 Playwright/Puppeteer,提供了完整的工程化封装,但相比 Scrapy 在 Python 生态的积累,TypeScript 这侧的学习曲线和社区深度还有差距。知乎上有人做过对比,”Scrapy 稳定性和用户群更成熟,Crawlee 更灵活,和 JS 生态集成更自然”——这个判断到今天依然成立。

如果你已经在 Node.js 生态里,Crawlee 是一个”少踩坑、快点上线”的选择。如果你需要爬取的是中文网站的复杂登录态或验证码,可能还需要结合打码平台和浏览器指纹库一起用——这部分 Crawlee 本身不解决,但可以通过自定义 playwright 代理中间件接入。

链接:

评论区

0 条评论

登录后可评论。

星火·GitHub 快讯 1292 阅读