Home
Login

LLM 및 AI 에이전트를 위해 최적화된 오픈 소스 고성능 웹 크롤러 및 데이터 추출 도구

Apache-2.0Python 46.0kunclecode Last Updated: 2025-06-18

Crawl4AI - LLM에 최적화된 오픈 소스 지능형 웹 크롤러

프로젝트 개요

Crawl4AI는 LLM, AI 에이전트 및 데이터 파이프라인에 맞게 제작된 고속, AI 지원 웹 크롤러입니다. 이 프로젝트는 완전한 오픈 소스이며 유연하고 실시간 성능을 위해 구축되어 개발자에게 비교할 수 없는 속도, 정확성 및 배포 편의성을 제공합니다.

핵심 기능

🤖 LLM을 위해 구축

  • RAG 및 미세 조정 애플리케이션에 최적화된 스마트하고 깔끔한 Markdown 생성
  • AI 모델 처리에 적합한 깨끗한 구조화된 콘텐츠 제공
  • 구조화된 데이터 추출을 위해 모든 LLM(오픈 소스 및 독점) 지원

⚡ 번개처럼 빠른 속도

  • 실시간, 비용 효율적인 성능으로 6배 더 빠른 결과 제공
  • 대규모 동시 처리를 지원하는 비동기 아키텍처 기반
  • 시스템 메모리에 따라 동적으로 동시성을 조정하는 메모리 적응형 스케줄러

🌐 유연한 브라우저 제어

  • 세션 관리, 프록시 지원 및 사용자 정의 후크
  • 사용자 소유 브라우저 지원, 완전한 제어, 봇 감지 방지
  • 인증 상태, 쿠키 및 설정을 저장하는 브라우저 프로필 관리
  • Chromium, Firefox 및 WebKit 다중 브라우저 지원

🧠 휴리스틱 지능

  • 고급 알고리즘을 사용하여 효율적인 추출을 수행하여 비싼 모델에 대한 의존도 감소
  • BM25 알고리즘 필터링, 핵심 정보 추출 및 관련 없는 콘텐츠 제거
  • 지능형 콘텐츠 정리 및 노이즈 감소 처리

주요 기능 모듈

📝 Markdown 생성

  • 깔끔한 Markdown: 형식 정확한 구조화된 Markdown 생성
  • 적응형 Markdown: 휴리스틱 필터링을 기반으로 노이즈 및 관련 없는 부분 제거
  • 인용 및 참조: 페이지 링크를 깔끔한 인용이 포함된 번호가 매겨진 참조 목록으로 변환
  • 사용자 정의 전략: 사용자는 특정 요구 사항에 맞는 Markdown 생성 전략을 만들 수 있습니다.

📊 구조화된 데이터 추출

  • LLM 기반 추출: 구조화된 데이터 추출을 위해 모든 LLM 지원
  • 분할 전략: 대상 콘텐츠 처리를 위해 분할(주제, 정규식, 문장 수준 기반) 구현
  • 코사인 유사도: 사용자 쿼리를 기반으로 관련 콘텐츠 블록을 찾아 의미론적 추출 수행
  • CSS 선택기 추출: XPath 및 CSS 선택기를 사용하여 빠른 패턴 추출 수행
  • 패턴 정의: 반복 패턴에서 구조화된 JSON을 추출하기 위한 사용자 정의 패턴 정의

🔎 크롤러 및 스크래핑 기능

  • 미디어 지원: 이미지, 오디오, 비디오 및 반응형 이미지 형식 추출
  • 동적 크롤러: JavaScript를 실행하고 비동기/동기 동적 콘텐츠 추출을 기다림
  • 스크린샷 기능: 디버깅 또는 분석을 위해 크롤링 프로세스 중에 페이지 스크린샷 캡처
  • 원시 데이터 크롤러: 원시 HTML 또는 로컬 파일 직접 처리
  • 전면적 링크 추출: 내부, 외부 링크 및 포함된 iframe 콘텐츠 추출
  • 사용자 정의 가능 후크: 각 단계에서 후크를 정의하여 크롤러 동작 사용자 정의
  • 캐시 메커니즘: 속도 향상 및 중복 가져오기 방지를 위해 데이터 캐시
  • 느린 로딩 처리: 이미지가 완전히 로드될 때까지 기다려 느린 로딩으로 인해 콘텐츠가 누락되지 않도록 함

🚀 배포 및 통합

  • Docker화 설정: 배포가 용이하도록 FastAPI 서버가 포함된 최적화된 Docker 이미지
  • 보안 인증: API 보안을 보장하는 내장 JWT 토큰 인증
  • API 게이트웨이: 보안 토큰 인증이 포함된 API 워크플로를 원클릭으로 배포
  • 확장 가능한 아키텍처: 대규모 생산을 위해 설계되었으며 서버 성능 최적화
  • 클라우드 배포: 주요 클라우드 플랫폼에 즉시 사용 가능한 배포 구성 제공

설치 방법

Python 패키지 설치


pip install -U crawl4ai


crawl4ai-setup


crawl4ai-doctor

Docker 배포


docker pull unclecode/crawl4ai:0.6.0-rN
docker run -d -p 11235:11235 --name crawl4ai --shm-size=1g unclecode/crawl4ai:0.6.0-rN

# webUI:http://localhost:11235/playground

기본 사용 예제

간단한 웹 페이지 크롤링

import asyncio
from crawl4ai import *

async def main():
    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(
            url="https://www.nbcnews.com/business",
        )
        print(result.markdown)

if __name__ == "__main__":
    asyncio.run(main())

명령줄 인터페이스


crwl https://www.nbcnews.com/business -o markdown


crwl https://docs.crawl4ai.com --deep-crawl bfs --max-pages 10


crwl https://www.example.com/products -q "Extract all product prices"

LLM 구조화된 데이터 추출

import os
import asyncio
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode, LLMConfig
from crawl4ai.extraction_strategy import LLMExtractionStrategy
from pydantic import BaseModel, Field

class OpenAIModelFee(BaseModel):
    model_name: str = Field(..., description="Name of the OpenAI model.")
    input_fee: str = Field(..., description="Fee for input token for the OpenAI model.")
    output_fee: str = Field(..., description="Fee for output token for the OpenAI model.")

async def main():
    browser_config = BrowserConfig(verbose=True)
    run_config = CrawlerRunConfig(
        word_count_threshold=1,
        extraction_strategy=LLMExtractionStrategy(
            llm_config = LLMConfig(provider="openai/gpt-4o", api_token=os.getenv('OPENAI_API_KEY')),
            schema=OpenAIModelFee.schema(),
                      extraction_type="schema",
            instruction="""From the crawled content, extract all mentioned model names along with their fees for input and output tokens. 
            Do not miss any models in the entire content. One extracted model JSON format should look like this: 
            {"model_name": "GPT-4", "input_fee": "US$10.00 / 1M tokens", "output_fee": "US$30.00 / 1M tokens"}."""
        ),            
        cache_mode=CacheMode.BYPASS,
    )
    
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result = await crawler.arun(
            url='https://openai.com/api/pricing/',
            config=run_config
        )
        print(result.extracted_content)

if __name__ == "__main__":
    asyncio.run(main())

최신 버전 기능 (v0.6.0)

🌍 세계 인식 크롤링

지리적 위치, 언어 및 시간대를 설정하여 실제 지역별 콘텐츠를 가져옵니다.

run_config = CrawlerRunConfig(
    url="https://browserleaks.com/geo",
    locale="en-US",
    timezone_id="America/Los_Angeles",
    geolocation=GeolocationConfig(
        latitude=34.0522,
        longitude=-118.2437,
        accuracy=10.0,
    )
)

📊 테이블에서 DataFrame으로 추출

HTML 테이블을 CSV 또는 pandas DataFrame으로 직접 추출합니다.


results = await crawler.arun(
    url="https://coinmarketcap.com/?page=1",
    config=crawl_config
)


raw_df = pd.DataFrame()
for result in results:
    if result.success and result.media["tables"]:
        raw_df = pd.DataFrame(
            result.media["tables"][0]["rows"],
            columns=result.media["tables"][0]["headers"],
        )
        break

🚀 브라우저 풀링

페이지 시작 시 예열된 브라우저 인스턴스를 사용하여 대기 시간 및 메모리 사용량 감소

🔌 MCP 통합

모델 컨텍스트 프로토콜을 통해 Claude Code와 같은 AI 도구에 연결합니다.


claude mcp add --transport sse c4ai-sse http://localhost:11235/mcp/sse

기술 아키텍처

핵심 구성 요소

  • 비동기 크롤러 엔진: Playwright 기반의 고성능 비동기 아키텍처
  • 콘텐츠 필터링 전략: 트리밍 필터 및 BM25 필터를 포함한 다양한 필터링 알고리즘
  • 추출 전략: CSS 선택기, LLM 및 사용자 정의 추출 전략 지원
  • Markdown 생성기: 지능형 콘텐츠를 AI 친화적인 Markdown 형식으로 변환
  • 브라우저 관리: 완전한 브라우저 수명 주기 관리 및 세션 제어

지원되는 추출 방법

  1. CSS 선택기 추출: 빠르고 정확한 구조화된 데이터 추출
  2. LLM 추출: 대규모 언어 모델을 사용하여 지능형 콘텐츠 이해
  3. JavaScript 실행: 동적 콘텐츠 처리 및 상호 작용
  4. 정규식: 패턴 매칭 및 텍스트 처리
  5. XPath 선택기: 고급 DOM 요소 위치 지정

성능 이점

  • 6배 속도 향상: 기존 크롤러 도구에 비해
  • 메모리 최적화: 지능형 메모리 관리 및 가비지 수집
  • 동시 처리: 수천 개의 URL에 대한 동시 크롤링 지원
  • 캐시 메커니즘: 지능형 캐시로 중복 요청 감소
  • 리소스 제어: 적응형 리소스 할당 및 제한

활용 사례

데이터 과학 및 연구

  • 학술 논문 및 연구 데이터 수집
  • 시장 조사 및 경쟁 분석
  • 소셜 미디어 데이터 마이닝

AI 및 머신러닝

  • 훈련 데이터 수집 및 전처리
  • RAG 시스템 콘텐츠 획득
  • 지식 그래프 구축

비즈니스 인텔리전스

  • 가격 모니터링 및 비교
  • 뉴스 및 여론 모니터링
  • 기업 데이터 집계

콘텐츠 관리

  • 웹사이트 마이그레이션 및 백업
  • 콘텐츠 집계 및 배포
  • SEO 분석 및 최적화

개발 로드맵

  • 그래프 크롤러: 그래프 검색 알고리즘을 사용하여 지능형 웹사이트 탐색
  • 문제 기반 크롤러: 자연어 기반 웹 페이지 검색 및 콘텐츠 추출
  • 지식 최적 크롤러: 데이터 추출을 최소화하면서 지식 획득 극대화
  • 에이전트 크롤러: 복잡한 다단계 크롤링 작업을 위한 자율 시스템
  • 자동화된 패턴 생성기: 자연어를 추출 패턴으로 변환
  • 도메인 특정 크롤러: 일반적인 플랫폼을 위한 사전 구성된 추출기

커뮤니티 및 지원

Crawl4AI는 활발한 오픈 소스 커뮤니티 지원을 받으며 코드 기여, 문제 보고 및 제안을 환영합니다. 이 프로젝트는 Apache 2.0 라이선스를 따르며 완전한 오픈 소스이며 무료로 사용할 수 있습니다.

요약

Crawl4AI는 특히 AI 시대의 맥락에서 웹 크롤링 기술의 최신 발전을 나타냅니다. 기존 크롤러의 모든 기능을 제공할 뿐만 아니라 현대 AI 애플리케이션에 맞게 특별히 최적화되어 데이터 과학자, AI 연구원 및 개발자에게 이상적인 선택입니다. 오픈 소스 특성과 활발한 커뮤니티를 통해 Crawl4AI는 웹 데이터 추출 기술의 민주화와 표준화를 추진하고 있습니다.