Apify/Crawlee 快速入门指南:轻松构建高效爬虫
前言
在当今数据驱动的时代,网络爬虫已成为获取互联网信息的重要工具。Apify/Crawlee 是一个强大的 Node.js 爬虫框架,它简化了爬虫开发流程,让开发者能够快速构建高效、可靠的网络爬虫。本文将带你快速上手 Crawlee,了解其核心功能和基本使用方法。
环境准备
在开始之前,请确保你的开发环境满足以下要求:
- Node.js 16 或更高版本
- npm 或 yarn 包管理器
Crawlee 三大核心爬虫类
Crawlee 提供了三种主要的爬虫类,每种都针对不同的使用场景进行了优化:
1. CheerioCrawler
特点:
- 基于纯 HTTP 请求
- 使用 Cheerio 库解析 HTML
- 采用 got-scraping HTTP 客户端模拟浏览器行为
- 执行速度快、资源消耗低
- 不支持 JavaScript 渲染的页面
适用场景:静态网页抓取,对性能要求高的简单爬取任务
2. PuppeteerCrawler
特点:
- 基于 Puppeteer 库
- 控制 Chromium 或 Chrome 浏览器
- 支持 JavaScript 渲染的页面
- 行业标准的无头浏览器自动化工具
适用场景:需要处理动态内容的复杂网页
3. PlaywrightCrawler
特点:
- 基于 Playwright 库
- 支持多种浏览器(Chromium、Firefox、Webkit 等)
- 功能更强大,API 更丰富
- Puppeteer 的进化版本
适用场景:跨浏览器测试和复杂网页抓取
快速安装指南
方法一:使用 Crawlee CLI(推荐)
对于初学者,使用 CLI 工具是最快捷的方式:
npx crawlee create my-crawler
创建完成后,进入项目目录并启动:
cd my-crawler && npm start
方法二:手动安装
根据你的需求选择安装对应的爬虫类型:
CheerioCrawler(基础安装)
npm install crawlee
PlaywrightCrawler(需要额外安装)
npm install crawlee playwright
PuppeteerCrawler(需要额外安装)
npm install crawlee puppeteer
编写第一个爬虫
下面我们以 CheerioCrawler 为例,展示一个简单的爬虫实现:
import { CheerioCrawler } from 'crawlee';
const crawler = new CheerioCrawler({
async requestHandler({ request, $ }) {
console.log(`Processing: ${request.url}`);
// 提取页面标题
const title = $('title').text();
console.log(`Title: ${title}`);
// 保存结果
await Dataset.pushData({
url: request.url,
title,
});
},
});
// 启动爬虫
await crawler.run(['https://crawlee.dev']);
代码解析
- 导入 CheerioCrawler 类
- 创建 crawler 实例,配置 requestHandler
- 在 requestHandler 中:
- 使用
$
(Cheerio 对象)解析 HTML - 提取页面标题
- 将结果保存到数据集
- 使用
- 调用
crawler.run()
启动爬取
可视化调试(无头浏览器模式)
对于 Puppeteer 和 Playwright 爬虫,你可以启用可视化模式进行调试:
import { PlaywrightCrawler } from 'crawlee';
const crawler = new PlaywrightCrawler({
// 启用可视化浏览器窗口
launchContext: {
launchOptions: {
headless: false,
},
},
// 减慢执行速度便于观察
maxRequestConcurrency: 1,
requestHandlerTimeoutSecs: 30,
async requestHandler({ page }) {
// 页面操作代码...
},
});
数据存储与管理
Crawlee 自动将爬取结果存储在项目目录下的 ./storage
文件夹中:
- 数据集存储在
./storage/datasets/default/
目录下 - 每个结果保存为独立的 JSON 文件
- 可以通过环境变量
CRAWLEE_STORAGE_DIR
修改存储路径
最佳实践建议
- 开发阶段:使用可视化模式调试爬虫
- 生产环境:切换回无头模式提高性能
- 错误处理:为爬虫添加适当的错误处理逻辑
- 速率控制:合理设置请求间隔,避免被封禁
- 结果验证:定期检查存储的数据质量
进阶学习方向
掌握了基础用法后,你可以进一步探索:
- 请求队列管理
- 代理配置
- 分布式爬取
- 自定义存储后端
- 高级选择器技巧
通过本文,你已经了解了 Crawlee 的基本使用方法。这个强大的框架能够帮助你快速构建各种复杂的爬虫应用,无论是简单的数据采集还是复杂的自动化任务,Crawlee 都能提供可靠的解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考