라이브러리 자동 선택 가이드
판별 기준 요약
| 사이트 유형 | 조건 | 선택 라이브러리 |
|---|---|---|
| 정적 페이지 | HTML에서 즉시 데이터 확인 | Requests + BeautifulSoup4 |
| 동적 페이지 | JavaScript 렌더링 필요 | Selenium + webdriver-manager |
| API 기반 | JSON API 엔드포인트 발견 | Requests (API 직접 호출) |
1. 정적 페이지 (Requests + BeautifulSoup4)
판별 방법
Playwright로 페이지 분석 시:
browser_snapshot에서 즉시 원하는 데이터가 보임browser_network_requests에서 XHR/Fetch 요청 없음- 페이지 소스에 데이터가 HTML로 포함됨
특징
- 서버에서 완성된 HTML 반환
- JavaScript 없이 데이터 추출 가능
- 빠른 크롤링 속도
예시 사이트
- 뉴스 기사 목록
- 블로그 포스트
- 정적 상품 카탈로그
- 위키 페이지
2. 동적 페이지 (Selenium)
판별 방법
Playwright로 페이지 분석 시:
browser_snapshot초기 로드 시 데이터 없음browser_wait_for후에야 데이터 표시browser_network_requests에서 XHR/Fetch 요청 다수 감지- JavaScript로 DOM 동적 생성
특징
- 클라이언트 사이드 렌더링 (CSR)
- AJAX로 데이터 로드
- 무한 스크롤, 동적 필터링
- 느린 크롤링 속도 (브라우저 실행 필요)
예시 사이트
- SPA (Single Page Application)
- React/Vue/Angular 기반 사이트
- 무한 스크롤 피드
- 동적 필터/정렬 기능
3. API 기반 (Requests API 직접)
판별 방법
Playwright로 페이지 분석 시:
browser_network_requests에서 JSON 응답 발견- API 엔드포인트 URL 패턴 확인 (/api/, /v1/, etc.)
- 응답 Content-Type: application/json
특징
- 가장 효율적인 방법
- 정형화된 데이터 구조
- 페이지네이션 처리 용이
- 빠른 크롤링 속도
예시 사이트
- REST API 제공 사이트
- 공공데이터 포털
- 소셜 미디어 피드
- 실시간 데이터 서비스
Playwright 분석 명령어
1. 페이지 접속
mcp__playwright__browser_navigate: {"url": "https://target-site.com"}
2. 페이지 로드 대기
mcp__playwright__browser_wait_for: {"time": 3}
3. DOM 구조 확인
mcp__playwright__browser_snapshot: {}
4. 네트워크 요청 분석
mcp__playwright__browser_network_requests: {}
5. 분석 종료
mcp__playwright__browser_close: {}
판별 플로우차트
페이지 로드
│
├─── Network에서 JSON API 발견?
│ │
│ YES → Requests (API 직접)
│ │
│ NO
│ ↓
├─── 초기 HTML에 데이터 있음?
│ │
│ YES → Requests + BeautifulSoup4
│ │
│ NO
│ ↓
└─── AJAX 로드 후 데이터 표시?
│
YES → Selenium
우선순위
-
API 직접 호출 (발견 시 최우선)
- 가장 효율적, 안정적
- 구조화된 데이터
-
정적 크롤링 (HTML에 데이터 있을 때)
- 빠르고 간단
- 브라우저 불필요
-
동적 크롤링 (JavaScript 필수 시)
- 마지막 선택
- 리소스 많이 사용