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都能提供穩定可靠的解決方案。