개요
Firecrawl은 웹사이트의 모든 페이지를 크롤링하여 마크다운, HTML, 구조화 데이터 등 다양한 포맷으로 변환해주는 오픈소스 웹 크롤러이자 스크래퍼입니다. AI, 데이터 분석, 검색, 챗봇 등 다양한 분야에서 활용할 수 있으며, 복잡한 웹사이트도 손쉽게 LLM(대형언어모델) 학습에 적합한 데이터로 변환할 수 있습니다. 본 글에서는 Firecrawl의 주요 특징, 사용법, 실전 예제, 그리고 활용 팁을 정리합니다.
목차
- Firecrawl이란?
- 주요 기능 및 특징
- 설치 및 시작하기
- 실전 사용 예제 (Python)
- 고급 활용법 및 팁
- 활용 사례
- 마크다운 표로 보는 주요 옵션
- 참고 및 공식 문서
Firecrawl이란?
Firecrawl은 웹사이트의 모든 접근 가능한 하위 페이지를 자동으로 탐색(crawl)하고, 각 페이지의 콘텐츠를 마크다운, HTML, 구조화 데이터 등으로 변환해주는 API 기반의 크롤러입니다. 별도의 사이트맵 없이도 동적 콘텐츠, 자바스크립트 렌더링 페이지까지 지원하며, LLM 학습, 검색엔진, 데이터 분석 등 다양한 목적에 활용할 수 있습니다.
주요 기능 및 특징
- 마크다운/HTML/스크린샷/링크/메타데이터 등 다양한 포맷 지원
- 동적 콘텐츠 및 자바스크립트 렌더링 페이지 지원
- 사이트맵 없이도 모든 하위 페이지 자동 탐색
- API/SDK(Python, Node, Go, Rust) 제공
- 비동기 크롤링 및 대규모 데이터 수집 지원
- 크롤링 범위, 포맷, 태그, 경로 등 세밀한 옵션 제공
- LangChain, LlamaIndex 등 AI 프레임워크와 통합
- 오픈소스 및 클라우드 서비스 동시 제공
설치 및 시작하기
Python SDK 설치
pip install firecrawl-py
API 키 발급
- Firecrawl 공식 사이트에서 회원가입 후 API 키를 발급받으세요.
기본 사용 예제
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="fc-YOUR_API_KEY")
result = app.scrape_url('https://docs.firecrawl.dev/introduction', formats=['markdown', 'html'])
print(result['data']['markdown'])
실전 사용 예제: 전체 사이트 크롤링
아래는 특정 사이트의 모든 하위 페이지를 크롤링하여 마크다운으로 저장하는 예제입니다.
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="fc-YOUR_API_KEY")
crawl_result = app.crawl_url(
'https://docs.firecrawl.dev/introduction',
limit=10, # 최대 10페이지 크롤링
scrape_options={"formats": ["markdown", "html"]}
)
for page in crawl_result['data']:
print(page['metadata']['url'])
print(page['markdown'][:300]) # 각 페이지의 마크다운 일부 출력
고급 활용법 및 팁
- 비동기 크롤링: 대규모 사이트는 async_crawl_url, check_crawl_status로 효율적으로 처리
- 포맷 옵션: markdown, html, links, screenshot 등 동시 요청 가능
- 크롤링 범위 제한: includePaths, excludePaths, maxDepth, limit 등으로 세밀하게 제어
- 특정 태그만 추출: includeTags, excludeTags 옵션 활용
- AI 파이프라인 연동: LangChain, LlamaIndex 등과 통합해 RAG, 챗봇, 검색엔진 구축
활용 사례
- AI 챗봇/검색엔진: 문서 전체를 마크다운으로 변환해 RAG 파이프라인 구축
- 데이터 분석/아카이빙: 대규모 웹사이트의 구조화 데이터 수집
- 변화 감지/모니터링: 웹페이지 변경사항 추적 및 알림 시스템
- 자동화된 문서화: 기술문서, API 문서 등 자동 수집 및 변환
주요 옵션 요약 (표)
옵션명 | 설명 | 예시 값 |
---|---|---|
formats | 추출 포맷 지정 | ["markdown", "html"] |
limit | 최대 크롤링 페이지 수 | 10 |
maxDepth | 최대 탐색 깊이 | 2 |
includePaths | 포함할 경로 패턴 | ["/docs/*"] |
excludePaths | 제외할 경로 패턴 | ["/blog/*"] |
onlyMainContent | 본문만 추출 여부 | True |
includeTags | 포함할 HTML 태그/클래스/ID | ["code", "#main"] |
excludeTags | 제외할 HTML 태그/클래스/ID | ["nav", ".footer"] |
allowExternalLinks | 외부 링크 크롤링 허용 여부 | False |
참고 및 공식 문서
- Firecrawl 공식 문서
- 공식 블로그: Mastering Firecrawl's Crawl Endpoint
- SourceForge Firecrawl 소개
- PraisonAI Firecrawl 연동 가이드
본 포스트는 Firecrawl 공식 문서 및 블로그, SourceForge, PraisonAI Docs 등 다양한 공식 자료를 참고하여 작성되었습니다.
반응형