Post

파이썬 웹 클라이언트 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.