티스토리 뷰
Firecrawl은 웹사이트에서 데이터를 추출하고 이를 AI 모델(특히 대규모 언어 모델, LLM)에 바로 사용할 수 있는 형태로 변환해주는 강력한 웹 스크래핑 도구이다. 간단히 말해, 웹 데이터를 "크롤링"하고 "스크랩"해서 깔끔한 마크다운(Markdown)이나 구조화된 데이터(JSON 등)로 바꿔주는 서비스이다.
Firecrawl이란?
Firecrawl은 Mendable.ai 팀이 개발한 오픈소스 기반의 API 서비스로, 개발자나 데이터 분석가들이 웹에서 데이터를 쉽게 수집할 수 있도록 설계되었다. 복잡한 설정 없이 URL 하나만 주면 해당 웹사이트와 그 하위 페이지를 자동으로 탐색해서 데이터를 가져온다. 특히 LLM에 최적화된 출력(예: 마크다운, 구조화된 데이터)을 제공한다는 점이 큰 특징이다.
주요 기능
- 스크랩(Scrape)
- 단일 URL에서 데이터를 추출.
- HTML, 마크다운, 스크린샷, JSON 등 다양한 형식으로 출력 가능.
- 예: "https://example.com"을 주면 그 페이지의 주요 콘텐츠를 깔끔하게 가져옴.
- 크롤(Crawl)
- 웹사이트 전체를 재귀적으로 탐색해서 모든 접근 가능한 하위 페이지의 데이터를 수집.
- 사이트맵이 없어도 링크를 따라가며 데이터를 모음.
- 예: "https://firecrawl.dev"를 크롤링하면 홈페이지부터 블로그, 가격 페이지 등 모든 데이터를 가져올 수 있음.
- 데이터 정리
- 광고, 헤더, 푸터 같은 불필요한 요소를 제거하고 주요 콘텐츠만 추출
- JavaScript로 렌더링된 동적 콘텐츠도 처리 가능
- LLM 친화적 출력
- AI 모델이 바로 사용할 수 있도록 마크다운이나 구조화된 데이터로 변환
- 예: "제품 특징을 추출해줘" 같은 요청에 맞춰 JSON으로 깔끔하게 정리
- 추가 기능
- 맵(Map): 웹사이트의 모든 URL 목록을 빠르게 제공.
- 추출(Extract): AI를 활용해 특정 데이터를 구조화된 형태로 뽑아냄(예: 이름, 이메일, 가격 등)
어떻게 작동하나요?
1. 준비 단계
(1) API 키 발급
- Firecrawl 웹사이트(firecrawl.dev)에 가서 계정을 만들고 로그인.
- 대시보드에서 API 키를 발급받아요. 무료 플랜으로 시작하면 500 크레딧이 제공됩니다.
- API 키는
fc-
로 시작하는 긴 문자열이에요(예:fc-YOUR_API_KEY
).
(2) 환경 설정
- 프로젝트 디렉토리에
.env
파일을 만들어 API키를 환경 변수로 설정
FIRECRAWL_API_KEY='fc-YOUR-KEY-HERE'
- 필요하면 SDK를 설치(아래에서 설명).
2. 사용 방법
Firecrawl은 주로 두 가지 작업(스크랩과 크롤)을 지원한다.
(1) 단일 URL 스크랩 (Scrape)
- 특정 페이지의 데이터를 추출하는 방법
- Python 예시
from firecrawl import FirecrawlApp
from dotenv import load_dotenv
import os
# .env 파일에서 환경 변수 로드
load_dotenv()
api_key = os.getenv("FIRECRAWL_API_KEY")
# .env에서 API 키로 FirecrawlApp 초기화
app = FirecrawlApp(api_key)
# 스크래핑할 URL 정의
url = "https://www.firecrawl.dev"
# 웹사이트 스크래핑
response = app.scrape_url(url)
# 응답 출력
print(response["markdown"])
- 설치: pip install firecrawl-py
- 결과: 웹사이트의 주요 콘텐츠가 마크다운으로 반환됨
(2) 웹사이트 전체 크롤 (Crawl)
- 사이트의 모든 페이지를 재귀적으로 탐색해서 데이터를 수집
- Python 예시
from firecrawl import FirecrawlApp
from dotenv import load_dotenv
import os
# .env 파일 로드
load_dotenv()
# 환경 변수 가져오기
api_key = os.getenv("FIRECRAWL_API_KEY")
# .env에서 API 키로 FirecrawlApp 초기화
app = FirecrawlApp(api_key)
# 크롤링 시작
crawl_result = app.crawl_url(
"https://www.firecrawl.dev/",
params={
"limit": 10, # 최대 10개 페이지 크롤링
"scrapeOptions": {"formats": ["markdown"]} # 마크다운 형식으로
}
)
# 결과 출력
print(crawl_result)
- 크롤링은 비동기 작업이라 결과가 완료될 때까지 기다려야 할 수 있음
(3) 옵션 커스터 마이징
scrapeOptions
또는 rawlerOptions
로 세부 설정 가능
onlyMainContent: true
: 광고, 내비게이션 제외하고 본문만 추출formats: ["markdown", "html"]
: 원하는 출력 형식 지정excludePaths: ["/blog/*"]
: 특정 경로 제외- 예: Python에서 본문만 추출
result = app.scrape_url("https://firecrawl.dev", {"onlyMainContent": True})
3. 결과 활용
- 출력 형식
markdown
: 텍스트 콘텐츠(LLM에 바로 주입 가능).html
: 원본 HTML.metadata
: 제목, 링크, 언어 등 추가 정보.
- 활용 예
- 파일로 저장:
with open("output.md", "w") as f: f.write(result["markdown"])
- AI 모델에 주입: 직접 LLM에 전달해서 요약, 분석 등 요청.
- 데이터베이스 저장: JSON 결과를 MongoDB나 SQLite에 삽입.
- 파일로 저장:
4. 주의사항
- 크레딧 관리: 무료 플랜은 500 크레딧, 스크랩 1회당 1크레딧, 크롤링은 페이지 수에 따라 소모.
- 속도: 대량 크롤링은 시간이 걸릴 수 있으니
limit
으로 조정.
결론
스크래핑과 크롤링 둘다 마크다운 형식으로 터미널에 출력되나, 원하는 데이터를 추출하는 데는 추가 데이터 작업이 필요하다. 다음은 MCP 통해 웹 데이터를 수집하고 방법을 통해 유용한지 확인해 봐야 겠다.
'Coding Study > Scraping' 카테고리의 다른 글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- chrome버전
- VSCode
- 챗gpt
- 소스제어
- 무주택세대구성원
- Python
- kc인증
- 옵시디언
- 주택청약제도
- 고양장항신혼희망타운
- model context protocol
- Git
- Google sheet
- 주택청약
- chromedriver버전오류
- chatGPT
- 구글시트
- This version of ChromeDriver only supports Chrome version
- 청약제도
- scraping
- 버전제어
- GitHub
- 티스토리챌린지
- vscode 구글시트 연동
- 청약통장
- IMPORTRANGE
- notebooklm
- Selenium
- 오블완
- OpenAI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함