最完整Crawlee入门指南:5分钟搭建专业爬虫项目
你还在为复杂的网页抓取任务烦恼吗?想快速搭建一个稳定高效的爬虫却不知从何下手?本文将带你5分钟入门Crawlee,一个专为Node.js设计的网页抓取和浏览器自动化库,让你轻松构建专业级爬虫项目。读完本文,你将掌握Crawlee的安装配置、三种核心爬虫类型的使用、数据提取与存储的完整流程,并能独立运行你的第一个爬虫项目。
环境准备与快速安装
Crawlee需要Node.js 16或更高版本环境。首先确认你的开发环境是否满足要求:
node -v # 检查Node.js版本
npm -v # 检查npm版本
两种安装方式
1. 使用Crawlee CLI(推荐) 最快捷的方式是使用Crawlee命令行工具,它会自动创建项目结构并安装依赖:
npx crawlee create my-crawler
cd my-crawler && npm start
2. 手动安装 如果需要集成到现有Node.js项目,可根据爬虫类型手动安装:
CheerioCrawler(轻量级HTTP爬虫)
npm install crawlee
PlaywrightCrawler(多浏览器支持)
npm install crawlee playwright
PuppeteerCrawler(Chrome/Chromium专用)
npm install crawlee puppeteer
官方文档:docs/quick-start/index.mdx
核心爬虫类型与应用场景
Crawlee提供三种核心爬虫,满足不同场景需求:
1. CheerioCrawler:轻量级HTTP爬虫
基于Cheerio解析HTML,速度快、资源占用低,适合静态网页抓取。不支持JavaScript渲染,适用于服务器端渲染(SSR)网站。
import { CheerioCrawler } from 'crawlee';
const crawler = new CheerioCrawler({
async requestHandler({ $, request }) {
const title = $('title').text();
console.log(`标题: ${title} (${request.url})`);
}
});
await crawler.run(['https://crawlee.dev']);
2. PlaywrightCrawler:多浏览器自动化
支持Chromium、Firefox、WebKit等多种浏览器,功能全面,适合需要JavaScript渲染的动态网页。
import { PlaywrightCrawler } from 'crawlee';
const crawler = new PlaywrightCrawler({
async requestHandler({ page, request }) {
const title = await page.title();
console.log(`标题: ${title} (${request.url})`);
}
});
await crawler.run(['https://crawlee.dev']);
3. PuppeteerCrawler:Chrome专用爬虫
专注于Chrome/Chromium浏览器自动化,API成熟稳定,适合需要深度控制Chrome的场景。
三种爬虫对比:
| 爬虫类型 | 渲染能力 | 速度 | 资源占用 | 适用场景 |
|---|---|---|---|---|
| CheerioCrawler | ❌ 无 | ⚡ 最快 | 📉 低 | 静态网页、API数据 |
| PlaywrightCrawler | ✅ 全功能 | 🚀 快 | 📈 中 | 动态网页、多浏览器测试 |
| PuppeteerCrawler | ✅ Chrome渲染 | 🚀 快 | 📈 中 | Chrome生态集成 |
技术文档:docs/introduction/02-first-crawler.mdx
实战:5分钟构建网页标题抓取器
下面以PlaywrightCrawler为例,构建一个抓取网页标题并保存的完整爬虫:
1. 创建基本爬虫结构
import { PlaywrightCrawler, Dataset } from 'crawlee';
const crawler = new PlaywrightCrawler({
// 启用可视化模式(开发调试用)
headless: false,
async requestHandler({ page, request }) {
// 提取页面标题
const title = await page.title();
console.log(`抓取成功: ${title} (${request.url})`);
// 保存数据到数据集
await Dataset.pushData({
url: request.url,
title,
timestamp: new Date().toISOString()
});
}
});
// 启动爬虫,从指定URL开始
await crawler.run([
'https://crawlee.dev',
'https://crawlee.dev/js/docs/examples'
]);
2. 运行爬虫
node src/main.js
运行时会看到浏览器自动打开并访问目标网页,终端输出抓取进度:
INFO PlaywrightCrawler: Starting the crawl
抓取成功: Crawlee · Build reliable crawlers. Fast. | Crawlee (https://crawlee.dev)
抓取成功: Examples | Crawlee (https://crawlee.dev/js/docs/examples)
INFO PlaywrightCrawler: Crawling finished. Final request statistics:
INFO PlaywrightCrawler: Requests processed: 2
3. 查看结果数据
Crawlee自动将数据保存在./storage/datasets/default目录下:
// storage/datasets/default/000000001.json
{
"url": "https://crawlee.dev",
"title": "Crawlee · Build reliable crawlers. Fast. | Crawlee",
"timestamp": "2025-10-02T10:36:27.123Z"
}
完整示例:docs/introduction/07-example.ts
高级功能与最佳实践
1. 动态添加URL(递归爬取)
通过enqueueLinks自动发现并添加新URL:
import { PlaywrightCrawler } from 'crawlee';
const crawler = new PlaywrightCrawler({
async requestHandler({ page, enqueueLinks }) {
// 提取当前页面标题
const title = await page.title();
console.log(`标题: ${title}`);
// 发现并添加新链接(仅同一域名)
await enqueueLinks({
selector: 'a',
filter: ({ url }) => url.hostname === 'crawlee.dev'
});
}
});
await crawler.run(['https://crawlee.dev']);
2. 数据存储与导出
除默认文件存储外,可通过Dataset导出数据为CSV/JSON:
// 导出为CSV
await Dataset.exportToCSV('results');
// 导出为JSON
await Dataset.exportToJSON('results');
数据存储文档:docs/guides/result-storage.mdx
3. 反屏蔽策略
Crawlee内置多种反屏蔽机制,可通过配置增强爬取稳定性:
const crawler = new PlaywrightCrawler({
// 随机用户代理
useSessionPool: true,
sessionPoolOptions: { sessionOptions: { maxUsageCount: 5 } },
// 随机延迟
minConcurrency: 1,
maxConcurrency: 5,
// 重试失败请求
maxRequestRetries: 3,
});
反屏蔽指南:docs/guides/avoid_blocking.mdx
部署与扩展
本地开发调试
启用Headful模式查看浏览器操作过程:
const crawler = new PlaywrightCrawler({
headless: false, // 显示浏览器窗口
slowMo: 500, // 延迟500ms,便于观察
});
服务器部署
Crawlee支持多种部署方式:
- Docker容器化:docs/guides/docker_images.mdx
- 云平台部署:AWS、GCP等云服务部署指南 docs/deployment/
- Apify平台:一键部署到Apify云爬虫平台
总结与资源推荐
通过本文你已掌握Crawlee的核心使用方法,能够快速构建专业爬虫项目。关键要点:
- 根据需求选择合适的爬虫类型(静态页用Cheerio,动态页用Playwright/Puppeteer)
- 使用
crawler.run()启动爬虫,传入起始URL列表 - 通过
Dataset.pushData()轻松保存抓取结果 - 利用
enqueueLinks实现递归爬取整站内容
进阶学习资源:
- 完整示例库:docs/examples/
- API参考文档:packages/core/src/
- 社区教程:README.md
现在就动手创建你的第一个Crawlee爬虫项目吧!遇到问题可查阅官方文档或提交Issue获取帮助。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00