출처

개요

Crawlee는 웹에서 AI·LLM·RAG 파이프라인용 데이터를 수집할 수 있도록 설계된 Node.js 웹 스크래핑 라이브러리입니다. HTTP 요청 기반 크롤링과 실제 브라우저 기반 크롤링을 하나의 인터페이스로 제공해, 정적 HTML부터 JavaScript 렌더링이 필요한 사이트까지 다룰 수 있습니다. URL 큐 관리, 재시도, 저장소, 프록시 로테이션, 세션 관리 등 크롤러 운영에 필요한 기능을 기본 제공합니다. JavaScript와 TypeScript를 지원하며, Python 사용자를 위한 Crawlee for Python도 별도로 제공됩니다. Apache 2.0 라이선스로 공개되어 개인 및 상업적 용도로 사용할 수 있습니다.

핵심 포인트

  • HTTP 크롤링과 브라우저 크롤링을 동일한 인터페이스로 지원합니다.
    • HTTP/2, 브라우저와 유사한 헤더, TLS 지문 복제
    • Cheerio와 JSDOM을 활용한 HTML 파싱
    • JSON API 및 일반 HTTP 리소스 수집
    • Playwright와 Puppeteer 기반의 헤드리스·헤드풀 브라우저 크롤링
    • Chrome, Firefox, WebKit 지원
  • 영속적 URL 큐를 제공하며, 너비 우선 또는 깊이 우선 방식으로 크롤링 대상을 관리할 수 있습니다.
  • 수집한 표 형태 데이터와 파일을 디스크 또는 클라우드 저장소에 기록할 수 있습니다.
  • 시스템 자원에 따른 자동 스케일링, 프록시 로테이션, 세션 관리 기능을 제공합니다.
  • 라우팅, 오류 처리, 재시도 로직과 배포용 Dockerfile을 지원합니다.
  • Node.js 16 이상에서 사용할 수 있으며, CLI로 프로젝트 기본 구조를 생성하거나 npm 패키지로 기존 프로젝트에 추가할 수 있습니다.
  • 기본 데이터 저장 위치는 현재 작업 디렉터리의 ./storage이며, 설정으로 변경할 수 있습니다.

간단한 사용 예시

npx crawlee create my-crawler
cd my-crawler
npm start
npm install crawlee playwright
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();
  },
});
 
await crawler.run(['https://crawlee.dev']);

왜 중요한가

웹 데이터를 LLM이나 RAG에 활용하려면 페이지 요청뿐 아니라 링크 탐색, 동적 렌더링, 실패 재시도, 중복·세션 관리, 결과 저장 같은 운영 기능이 필요합니다. Crawlee는 이러한 공통 인프라를 HTTP 및 브라우저 크롤러에 걸쳐 통합하므로, 데이터 추출 로직에 집중할 수 있는 기반을 제공합니다. 다만 봇 보호 우회나 웹사이트 데이터 수집은 대상 사이트의 이용약관, robots.txt, 법적·윤리적 요구사항을 확인한 뒤 사용해야 합니다.

링크 및 후속 키워드

관련 위키

원문 보존 위치

원문 전체는 2026-07-25-pytorchkr-topic-11407-crawlee-ai-llm-node-jssource_url 및 HTML 원문과 함께 저장되어 있습니다.