unclecode/crawl4ai
Open-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.
Crawl4AI – LLM 및 AI 에이전트를 위해 구축된 오픈소스 웹 크롤러 & 스크레이퍼
개요 – 웹 페이지를 가져오고, 필요할 때 실제 브라우저를 실행하며, LLM 친화적인 깔끔한 Markdown 문서를 반환하는 Python 라이브러리입니다(Docker 서버 및 호스팅 클라우드 서비스로도 이용 가능). CSS/XPath 규칙이나 지정한 LLM을 사용하여 구조화된 데이터(JSON)를 추출할 수 있으며, 딥 크롤링, 적응형 크롤링, 배치 처리를 지원합니다.
중요성 – 대규모 언어 모델은 간결하고 구조화된 텍스트를 가장 잘 처리합니다. Crawl4AI는 메뉴, 푸터 및 기타 보일러플레이트를 제거하고, 인용 링크를 추가하며, 정의한 스키마에 맞는 JSON을 생성할 수 있습니다. 이는 RAG(검색 증강 생성) 파이프라인, 자율 에이전트 또는 모든 데이터 수집 워크플로우를 위한 편리한 프런트엔드가 됩니다.
사용 방법
- 라이브러리 –
pip install -U crawl4ai를 실행하고crawl4ai-setup으로 Playwright 브라우저를 설치합니다. 그 후AsyncWebCrawler(또는 동기 버전)를 사용하여result.markdown또는result.extracted_content를 가져옵니다. - CLI –
crwl <url> -o markdown또는crwl … --deep‑crawl bfs --max-pages 10. - Docker 서버 – 토큰을 지정하여
unclecode/crawl4ai를 실행하고, 모든 언어에서 REST 엔드포인트(/md,/html,/crawl,/screenshot등)를 호출합니다. - Crawl4AI Cloud – 몇 초 만에 무료 API 키를 발급받아, 브라우저를 직접 관리할 필요 없이
https://api.crawl4ai.com/scrape(또는/search,/answer,/extract)를 호출합니다.
주요 기능(README 기준)
- Markdown 생성 – 깔끔한 제목, 표, 코드 블록, 인용 목록; 구성 가능한 필터(
PruningContentFilterLXML,BM25ContentFilter,LLMContentFilter). - 구조화된 추출 – LLM 없이 빠른 추출을 위한 CSS/XPath/Regex 스키마; 모든 LLM 공급자를 위한
LLMExtractionStrategy; 자동 스키마 생성; 청킹 및 코사인 유사도 검색. - 브라우저 제어 – 영구 프로필, CDP 원격 브라우저, 세션 처리, 프록시 지원, 스텔스/미탐지 모드, Chromium/Firefox/WebKit.
- 크롤링 – BFS/DFS/최적 우선 전략, 재개 상태, 충분한 정보 수집 후 중단되는 적응형 크롤링, 사이트맵 또는 Common Crawl을 통한 URL 발견, 무한 스크롤 사이트의 전체 페이지 스크롤, 스크린샷/PDF, 미디어 추출, 캐싱, 배치 실행(
arun_many). - 셀프 호스팅 – 안전한 토큰 보호 REST API, Claude Code/기타 에이전트를 위한 MCP 통합, 모니터링 대시보드/플레이그라운드, AMD64 및 ARM64 Docker 이미지.
- 클라우드 전용 애드온 – 브라우저 없는 웹 검색(
/search), 직접 답변(/answer), 자체 LLM 키 없이 추출, JS 기반 사이트 및 봇 차단 자동 처리, 한 줄 MCP 등록.
설치 퀵스타트
pip install -U crawl4ai
crawl4ai-setup # Playwright 브라우저 설치
# 선택적 상태 확인
crawl4ai-doctor
Docker 사용 시:
export CRAWL4AI_API_TOKEN=$(openssl rand -hex 32)
docker run -d -p 11235:11235 \
-e CRAWL4AI_API_TOKEN=$CRAWL4AI_API_TOKEN \
unclecode/crawl4ai:latest
일반적인 코드 스니펫
import asyncio
from crawl4ai import AsyncWebCrawler
async def main():
async with AsyncWebCrawler() as crawler:
res = await crawler.arun(url="https://news.ycombinator.com")
print(res.markdown) # LLM 친화적인 깔끔한 markdown
asyncio.run(main())
라이선스 – Apache 2.0(배지나 텍스트를 통한 저작자 표시는 선택 사항).
커뮤니티 – Discord, GitHub issues, 기여 가이드, 그리고 지속적인 개발을 지원하기 위한 무료 크레딧 클라우드 티어.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트