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을 통해 안정적인 릴리스 버전 설치
- 베타 버전: 베타 버전 설치를 지원하여 새로운 기능 테스트
npm install crawlee@3.12.3-beta.13
적용 가능한 시나리오
데이터 과학 및 AI
- 머신러닝 데이터셋: AI 모델을 위한 훈련 데이터 수집
- RAG 시스템: 검색 증강 생성 시스템을 위한 지식 베이스 제공
- LLM 훈련: 대규모 언어 모델의 사전 훈련 데이터 수집
비즈니스 애플리케이션
- 경쟁사 분석: 경쟁사의 제품 및 가격 정보 모니터링
- 시장 조사: 산업 동향 및 시장 데이터 수집
- 콘텐츠 집계: 뉴스, 기사 등 콘텐츠 자동 수집
기술 모니터링
- 웹사이트 모니터링: 웹사이트 변경 사항 정기적으로 확인
- 가격 추적: 전자 상거래 제품 가격 모니터링
- 데이터 백업: 중요한 웹 페이지 콘텐츠 정기적으로 백업
요약
Crawlee는 포괄적이고 현대적인 디자인의 웹 스크래핑 프레임워크로, 특히 높은 신뢰성과 안티 디텍션 기능이 필요한 엔터프라이즈급 애플리케이션에 적합합니다. 통합된 API 디자인, 강력한 안티 디텍션 기능 및 완벽한 생태계를 통해 현대적인 데이터 수집 프로젝트에 이상적인 선택입니다. AI 프로젝트를 위한 데이터 수집이든, 비즈니스 인텔리전스 분석이든, Crawlee는 안정적이고 신뢰할 수 있는 솔루션을 제공할 수 있습니다.