• Feed
  • Explore
  • Ranking
/
/
    실무 아카이브

    데이터 QA – 수집 결과 검증 프로세스

    수집 데이터의 품질을 검증하기 위해 QA 프로세스를 추가하고, 링크 상태·기간 판정·실패 로그 기록을 통해 신뢰도를 확보했다.
    Python웹크롤링트러블슈팅데이터QA
    김
    김무명
    2025.09.02
    ·
    4 min read

    📝 상황

    데이터 수집 자동화가 성공적으로 끝나도, 실제 결과물이 신뢰할 수 있는지는 별도의 검증이 필요하다.
    이를 위해 QA 스크립트를 추가하여 수집된 데이터의 품질을 점검했다.

    🔍 주요 점검 항목

    1. 링크 상태 검증
      ok / bad / error / skip 네 가지로 분류하고, 상세 사유까지 기록한다.

    def check_url(url, timeout=12):
        try:
            r = requests.head(url, allow_redirects=True, timeout=timeout)
            if r.status_code >= 400 or r.status_code in (405, 403):
                r = requests.get(url, allow_redirects=True, timeout=timeout)
            return "ok" if 200 <= r.status_code < 400 else "bad"
        except Exception:
            return "error"
    
    1. 기간 컬럼 판정
      기간 문자열에서 종료일을 파싱하거나 키워드로 상태를 판정한다.

    def judge_period_status(period_str, today=date.today()):
        if "상시" in period_str or "수시" in period_str:
            return "진행중"
        if "마감" in period_str or "종료" in period_str:
            return "마감"
        # 종료일 날짜 파싱
        m = DATE_RANGE_RE.search(period_str)
        if m:
            end_dt = date(int(m.group(4)), int(m.group(5)), int(m.group(6)))
            return "진행중" if end_dt >= today else "마감"
        return "확인불가"
    
    1. QA 요약 통계 출력

    • 총 건수 / 중복 제거 건수

    • 필수 키워드 포함 여부

    • 기간 컬럼 빈값 수

    • 링크 정상률, 실패 유형

    • 기간 상태(진행중/마감/확인불가)

    • 유효 데이터 비율 + 실행 시간

    print("=== QA SUMMARY ===")
    print(f"총 건수: {total} (중복제거 후 {dedup})")
    print(f"링크 정상: {ok_cnt}, 실패: bad={bad_cnt}, error={err_cnt}, skip={skip_cnt}")
    print(f"모집기간 상태: 진행중={cnt_open}, 마감={cnt_closed}, 확인불가={cnt_tbd}")
    print(f"👉 유효 데이터: {valid_cnt}/{total} ({valid_ratio:.0f}%)")
    
    1. 로그 및 리포트

    • 실패 케이스만 qa_link_failures.csv 저장

    • 필요 시 전체 리포트도 CSV로 출력 가능

    ✅ 결과

    • 단순 수집 성공 여부가 아니라, 링크 유효성·기간 상태·키워드 적합성까지 수치화 가능해졌다.

    • 실패 케이스를 CSV로 기록하여, 추후 재현성과 개선 포인트 확보가 쉬워졌다.

    💡 실무 인사이트

    1. 데이터 QA는 신뢰도 확보의 핵심

      • 수집만으로는 부족하다. 품질 검증이 있어야 실제 활용이 가능하다.

    2. QA는 에러 찾기가 아니라 품질 지표화 과정

      • 정상률, 실패 유형, 유효 비율 등을 지표로 관리할 수 있다.

    3. 로그는 곧 개선의 단서

      • 실패 내역을 CSV로 저장하면, 재현성 있는 문제 추적과 고도화가 가능하다.







    - 컬렉션 아티클