작성 일자 : 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