피드로 돌아가기
Quizlet is gatekeeping more and more, so i made an extension
Dev.toDev.to
Frontend

HTML Scraping 한계를 API 직접 호출로 극복한 데이터 추출 최적화

Quizlet is gatekeeping more and more, so i made an extension

Oliver Seifert2026년 5월 5일12intermediate

Context

Quizlet의 유료화 정책 강화 및 Knowt 임포터의 HTML Scraping 방식에 따른 데이터 누락 문제 발생. 특히 페이지네이션 처리가 없는 단순 스크래핑으로 인해 145개 카드 중 100개만 추출되는 데이터 정합성 결여 상태 확인.

Technical Solution

  • HTML DOM 분석 대신 Quizlet 내부 API를 직접 호출하는 데이터 추출 로직 설계
  • Protobuf 기반의 Anki V18 스키마를 지원하는 TypeScript 라이브러리 ankipack 자체 개발
  • 다중 탭 상태의 Quizlet 세트를 단일 컨텍스트로 통합하는 Merge 기능 구현
  • txt, csv, json, pdf 등 다양한 스키마로의 데이터 변환 레이어 구축
  • Knowt API 연동을 통한 데이터 파이프라인 간소화 및 전송 효율 최적화

Impact

  • Knowt로의 데이터 임포트 시간을 5초 미만으로 단축
  • HTML Scraping 대비 데이터 누락률 0% 달성 및 전체 카드 세트 추출 보장

Key Takeaway

UI 기반의 Scraping보다 API 엔드포인트 직접 호출이 데이터 정합성과 성능 면에서 압도적 우위에 있음. 표준 라이브러리가 부재한 특수 포맷(Anki V18)의 경우, 도메인 특정 스키마를 직접 구현하여 제어력을 확보하는 전략이 유효함.


1. 외부 서비스 데이터 추출 시 HTML 구조 변경에 취약한 Scraping보다 API 분석 우선 검토

2. 대량 데이터 처리 시 페이지네이션 및 Lazy Loading으로 인한 데이터 누락 가능성 체크

3. 타겟 플랫폼의 최신 스키마(예: Protobuf, V18) 버전 일치 여부 확인 및 검증

원문 읽기