Crawlee - 现代化网页抓取和浏览器自动化框架
项目概述
Crawlee是由Apify公司开发的一个强大的Node.js网页抓取和浏览器自动化库,专为构建可靠的网页爬虫而设计。该项目支持JavaScript和TypeScript,能够为AI、大语言模型(LLM)、检索增强生成(RAG)等应用提供高质量的数据提取服务。
GitHub地址: https://github.com/apify/crawlee
核心功能特性
🚀 统一的抓取接口
- 多引擎支持: 统一接口支持HTTP请求和无头浏览器抓取
- 灵活选择: 可根据需求选择合适的抓取方式
🔄 智能队列管理
- 持久化队列: 支持广度优先和深度优先的URL爬取队列
- 自动扩展: 根据系统资源自动调整抓取规模
💾 灵活的存储系统
- 多格式支持: 支持表格数据和文件的可插拔存储
- 本地/云端: 默认存储到本地
./storage
目录,支持云端存储
🔒 企业级反检测
- 代理轮换: 集成代理轮换和会话管理
- 人性化模拟: 默认配置下能够模拟人类行为,绕过现代机器人检测
- 指纹伪造: 自动生成类似真实浏览器的TLS指纹和请求头
🛠 开发者友好
- TypeScript原生支持: 完整的类型定义和泛型支持
- CLI工具: 提供脚手架快速创建项目
- 生命周期钩子: 可自定义的生命周期事件处理
- Docker就绪: 内置Dockerfile,便于部署
支持的抓取方式
HTTP抓取
- 高性能: 零配置HTTP2支持,包括代理
- 智能解析: 集成Cheerio和JSDOM快速HTML解析器
- API友好: 同样支持JSON API的抓取
浏览器自动化
- 多浏览器: 支持Chrome、Firefox、Webkit等多种浏览器
- JavaScript渲染: 处理动态内容和单页应用
- 截图功能: 支持页面截图
- 无头/有头模式: 灵活的运行模式选择
- 统一接口: Playwright和Puppeteer使用相同的API接口
快速开始
使用CLI创建项目
npx crawlee create my-crawler
cd my-crawler
npm start
基础示例代码
import { PlaywrightCrawler, Dataset } from 'crawlee';
const crawler = new PlaywrightCrawler({
async requestHandler({ request, page, enqueueLinks, log }) {
const title = await page.title();
log.info(`Title of ${request.loadedUrl} is '${title}'`);
await Dataset.pushData({ title, url: request.loadedUrl });
await enqueueLinks();
},
// headless: false,
});
await crawler.run(['https://crawlee.dev']);
安装依赖
npm install crawlee playwright
技术架构
核心模块
- @crawlee/core: 核心功能模块
- @crawlee/types: TypeScript类型定义
- @crawlee/utils: 实用工具函数
支持的库和工具
- Playwright: 现代浏览器自动化
- Puppeteer: Chrome/Chromium自动化
- Cheerio: 快速HTML解析
- JSDOM: DOM操作和解析
部署和集成
本地开发
- 默认数据存储在
./storage
目录
- 支持通过配置文件自定义存储位置
- 完整的配置指南和文档支持
云端部署
- Apify平台: 由于Crawlee由Apify开发,可以轻松部署到Apify云平台
- Docker支持: 内置Docker配置,支持容器化部署
- 跨平台: 可在任何支持Node.js的环境中运行
版本管理
- 稳定版本: 通过npm安装稳定发布版本
- Beta版本: 支持安装beta版本测试新功能
npm install crawlee@3.12.3-beta.13
适用场景
数据科学和AI
- 机器学习数据集: 为AI模型收集训练数据
- RAG系统: 为检索增强生成系统提供知识库
- LLM训练: 大语言模型的预训练数据收集
商业应用
- 竞品分析: 监控竞争对手的产品和价格信息
- 市场研究: 收集行业趋势和市场数据
- 内容聚合: 新闻、文章等内容的自动化收集
技术监控
- 网站监控: 定期检查网站变化
- 价格追踪: 电商产品价格监控
- 数据备份: 重要网页内容的定期备份
总结
Crawlee是一个功能全面、设计现代的网页抓取框架,特别适合需要高可靠性和反检测能力的企业级应用。其统一的API设计、强大的反检测功能以及完善的生态系统,使其成为现代数据收集项目的理想选择。无论是为AI项目收集数据,还是进行商业智能分析,Crawlee都能提供稳定可靠的解决方案。