파이썬 웹 클라이언트 4종을 비교해보자
requests·httpx·playwright·HAR 네 가지 방식을 같은 인터페이스로 만들어 언제 무엇을 쓸지 비교해보자
파이썬 웹 클라이언트 4종을 비교해보자
파이썬 웹 클라이언트 4종을 비교해보자
지금까지 requests·httpx·playwright·HAR 방식을 하나씩 만들어봤다. 같은 인터페이스로 통일해 언제 무엇을 써야 하는지 비교해보자.
1. 서론 (Introduction)
- 문제/상황 (Problem):
- 웹 데이터를 가져오는 방식을 네 가지나 만들었으나, 막상 새 사이트를 만나면 무엇부터 써야 할지 매번 고민한다.
- 목적 (Purpose):
- 네 가지 클라이언트를 동일한
extract_meta인터페이스로 맞추고, 선택 기준을 한 표로 정리한다.
- 네 가지 클라이언트를 동일한
- 대상 (Target Audience):
- 사이트마다 다른 난이도(정적·동적·인증·봇 차단)를 마주하며 수집 도구를 고르는 개발자
2. 방법 및 과정 (Methods & Process)
- 배경 조사 및 데이터 (Data Collection):
- 네 구현 모두 같은 데모 서버에서
title·description·og:*메타를 추출하도록 통일하여 구조 차이만 드러나게 했다.
- 네 구현 모두 같은 데모 서버에서
| 방식 | 실행 모델 | JS 렌더링 | 봇 우회 | 무게 | 주 용도 |
|---|---|---|---|---|---|
| requests | 동기 | 불가 | 약함 | 가장 가벼움 | 정적 HTML 단건 |
| httpx | 비동기 | 불가 | 약함 | 가벼움 | 대량 동시 수집 |
| playwright | 비동기(브라우저) | 가능 | 보통 | 무거움 | 동적 페이지·로그인 |
| HAR 재현 | 브라우저 기록 + httpx | 기록 시점만 | 강함 | 중간 | 인증 후 API·바이너리 대량 획득 |
- 접근 방법 (Approach Methods):
- [방법 1]: 가벼운 HTTP 요청(requests·httpx)으로 HTML만 받아 파싱한다.
- [방법 2]: 실제 브라우저(playwright)로 렌더링하거나, 브라우저 통신을 HAR로 기록한 뒤 httpx로 재현한다.
- 분석 및 해결 프로세스 (Analysis Flow):
- 도구/기술: requests, httpx, playwright, beautifulsoup4, HAR(HTTP Archive)
- 주요 단계: 동기 요청(requests) $\rightarrow$ 비동기 요청(httpx) $\rightarrow$ 브라우저 렌더링(playwright) $\rightarrow$ HAR 기록·재현 순으로 무게를 키우며 동일 결과를 얻는지 확인한다.
- 결과 도출 및 검증: 네 방식 모두 같은 메타를 추출했고, 로컬 데모 서버 단일 추출 측정에서 requests 0.0079초, httpx 0.0083초, playwright 0.0648초로 브라우저를 띄우는 playwright가 약 8배 느림을 확인했다.
3. 결과 (Results)
- 분석 결과 요약:
- 네 방식 모두 동일한 메타를 추출했으나 무게와 가능 범위가 단계적으로 달라진다.
- 가벼운 requests·httpx는 정적·대량에, 브라우저 기반 playwright는 동적·로그인에, HAR 재현은 인증 후 API·바이너리 대량 획득에 적합하다.
4. 인사이트 및 액션 (Insights & Action)
- 인사이트 (Insight):
- 네 방식은 경쟁 관계가 아니라 사다리다. 가벼운 것으로 먼저 시도하고, 막히는 지점에서만 무거운 방식으로 올라가면 된다.
- 실행 방안 (Action Plan):
- 정적 단건은 requests, 대량은 httpx, JS·로그인은 playwright, 인증 후 대량 리소스는 HAR 재현을 기본값으로 채택한다.
- 한 줄 결론 (Key Takeaway):
- 같은 인터페이스로 네 방식을 갖춰두고 대상 난이도에 따라 갈아끼우자. 샘플 코드
- 다음 스텝 (Next Step):
- 이제 도구는 갖췄으니, 수집 전략을 자동으로 고르는 하이브리드 클라이언트로 묶어보자.
This post is licensed under CC BY 4.0 by the author.