작성 일자 : 2026-04-22

기획

친구가 매번 작업할 때 수작업이 힘들다고 하여 크롤링 가능성을 물어봤습니다.

목적은 나름 명확합니다.

https://shop.g2b.go.kr/

본 장터 페이지에서 특정 검색어로 나온 내용들에 대해 엑셀 시트로 옮기는 것이 목적입니다.

클라이언트의 목적은 명확합니다. 원하는 정보는 3개입니다. 식별번호, 이름, 가격

이 3개를 수집해서 정리하길 원합니다.

소목적

첫 배포이기 때문에 클라이언트가 제가 준 코드를 쉽게 사용할 수 있게끔 리드미까지 작성하는 것이 포인트입니다. 개발에 사용되는 시간은 2시간 안쪽으로 소요하여 개발을 완료할 예정입니다.

  • 쉬운 배포 (uv 사용법 첨부)
  • 읽기 쉬운 엑셀 파일로 전환

설계

필요 기술

검색을 진행하여도, 페이지를 이동하여도 도메인에 변화가 없는 것을 보니 동적 페이지임을 확인했습니다. 정적 페이지가 아니기 때문에 기본적인 html 파서 기술로는 크롤링이 어려운 것을 확인.

bs4 → selenium

혹은 모바일로 접근한 후 playwright를 사용하는 방식으로 고민하게 되었습니다.

FLOW

  1. 페이지 접근 후 나오는 공지 팝업 끄는 방법 고민.
    1. 닫기, 일주일간 이 창을 ~ 키워드 기반하여 종료하기
    2. 사용자가 닫아줄 때까지 대기
    3. block에서 none으로 바꾸기
<div id="_modal" class="w2modal" style="display: block;"></div>
  1. 창 옮겨서 창 두개 끄기
  2. 숫자 10을 100으로 변경 (보기)
  3. 인덱스만 바꾸면서 내용 쭉 크롤링
    1. 하다가 기존에 찾았던거 나오면 거기서 종료

구현

전반적으로 프로젝트에 대한 전반적인 이해를 가진 상태로 codex에 들어가야합니다. 애매하게 아는 상태에서 진행하면 나도 모르고 codex도 모르는 상태가 됩니다.

mf_wfm_container_tabShopSubHeader_contents_tabShopLstFormCon_body_genLstGdsList_0_itemIdnfNm

mf_wfm_container_tabShopSubHeader_contents_tabShopLstFormCon_body_genLstGdsList_0_itemIdnfNo

mf_wfm_container_tabShopSubHeader_contents_tabShopLstFormCon_body_genLstGdsList_0_itemIdnfNo

구현 완료


시행착오

  • 브라우저에서 개발자 모드 사용 시 팝업창과 함께 크롤링을 막아둔 것 같은 현상이 발견됨.

      • 페이지 이동하지 않는 이상 사용에 지장은 없기에 조금씩 진행함.

한계점

개선점


how to crawl?

  1. 정적 사이트 크롤링
  2. 동적 사이트 크롤링

정적 - HTML - 모든 내용 다있음

  • HTML parser
  • selector? GPT ()

→ beautiful soup 4

동적 - 마우스 움직이고 직접 클릭 움직이거나 특정조건 → 동적

  • 크롬창 직접 띄워야함.
  • headless 크롬창이 안보임
  • headless 안쓰면 무거움
  • 동적 사이트 특징 - 봇 방지가 많음 (사람임을 확인하세요)
  • recaptcha

→ selenium


모바일을 필요 모바일 버전 〰️ playwright