매달 10시간씩 사라지던
입찰공고 조회 업무,
코드 한 번으로 끝냈습니다
Python + Selenium으로 나라장터 자동 접속 → 업종별 입찰공고 수집 → 세부내역 추가 후 엑셀 저장까지 완전 자동화.
ChatGPT X Python RPA 교육 수강생이 직접 만든 공공조달 업무 자동화 실전 사례입니다.
나라장터는 클릭 한 번도
쉽지 않은 사이트입니다

공공 IT 사업의 입찰 정보는 나라장터(G2B)에 집중되어 있습니다. 담당자는 매달 수십 건의 특정 공공조달 분야 입찰공고를 직접 검색하고, 업종 코드를 선택하고, 마감 건을 제외하고, 공고별 세부내역을 하나하나 확인한 뒤 엑셀로 정리해야 했습니다. 해당 업종은 특정 조달 카테고리로, 매달 수십 건 이상의 공고가 등록됩니다.
문제는 나라장터가 보안·안정성 중심의 복잡한 프레임워크로 동작한다는 점입니다. 일반적인 자동화 방식으로는 버튼 하나도 클릭이 되지 않고, 팝업창은 예고 없이 등장합니다. 그래서 모든 과정이 결국 사람 손으로 돌아왔습니다.
월 10시간, 연 120시간. 같은 검색을 반복하면서도 실수나 누락이 생길 수 있는 구조였습니다.
"매달 같은 작업을 반복하는데, 나라장터는 자동화가 안 된다는 말을 들었습니다. 그게 오히려 도전해보고 싶었습니다."
| 단계 | 작업 내용 | 소요 시간 |
|---|---|---|
| STEP 1 | 나라장터 접속 → 팝업 수동으로 모두 닫기 | 약 5분 |
| STEP 2 | 입찰공고목록 → 상세조건 → 업종 돋보기 클릭 → 특정 업종코드 검색 후 선택 | 약 10분 |
| STEP 3 | 입찰마감 건 제외 설정 → 조회 결과 확인 | 약 5분 |
| STEP 4 | 감리사업 공고 건별 클릭 → 세부내역(낙찰방법·예산·추정가격 등) 수기 기록 | 약 2~3시간 |
| STEP 5 | 감리사업 내용 PDF 저장 및 엑셀 정리 | 약 1~2시간 |
🖱️ 공공기관 전용 프레임워크 환경 — 일반 자동화 방식이 즉시 적용되지 않아 모든 조작이 수작업으로 귀결
📋 공고 건별 세부내역 수기 입력 — 낙찰방법·예산·추정가격을 하나씩 복사하는 반복 작업이 전체 시간의 대부분
⏰ 월 10시간, 연 120시간 손실 — 동일한 루틴을 매달 처음부터 반복하면서도 누락 리스크가 상존
표준 브라우저 기술로
나라장터를 자동화했습니다

핵심 돌파구는 브라우저 표준 Web API 기반 이벤트 처리였습니다. 해당 사이트의 동작 방식을 분석해 공개된 브라우저 표준 API를 적용하는 방식으로, 버튼 클릭 동작을 안정적으로 처리했습니다.
팝업 자동 제거, 업종 코드 자동 입력, 엑셀 다운로드, 세부내역 추가 수집까지 전 과정이 코드 한 번 실행으로 완료됩니다.
사용 도구
|
1
|
STEP 1 · 팝업 자동 제거
공지 팝업 전체 자동 감지 및 닫기
접속 시 나타나는 복수의 팝업을 ID 패턴으로 감지해 순서대로 닫습니다. 팝업이 모두 사라질 때까지 반복 처리합니다.
결과값: 클린 상태의 나라장터 메인화면 확보
|
|
2
|
STEP 2 · 업종 자동 선택
JS MouseEvent로 대상 업종코드 자동 검색·선택
WebSquare 기반 사이트에서 사용하는 표준 브라우저 이벤트 방식(JavaScript Web API)을 활용해 버튼 조작을 수행합니다. 업종 팝업 입력창에 코드를 입력하고 결과 첫 번째 행을 자동 선택합니다.
결과값: 대상 업종코드 조건 자동 설정 완료
|
|
3
|
STEP 3 · 엑셀 자동 다운로드
조회 결과 엑셀 저장 및 알림창 자동 처리
검색 실행 후 브라우저 알림창이 뜨면 자동으로 수락하고, 엑셀 저장 버튼을 클릭합니다. 다운로드 완료까지 대기 후 가장 최근 파일을 자동 인식합니다.
결과값: 입찰공고 목록 엑셀 파일 자동 저장
|
|
4
|
STEP 4 · 완료
공고별 세부내역 자동 추출 및 엑셀 병합 저장
JavaScript로 각 공고의 세부 div를 자동 수집합니다. 공고명 기준으로 낙찰방법·예가방법·배정예산·추정가격 등을 정리해 다운로드된 엑셀에 컬럼을 추가하고 새 파일로 저장합니다.
출력형태: 입찰공고_업데이트.xlsx — 세부내역 포함 완성 파일
|
각 단계 핵심 포인트
나라장터는 일반 Selenium click()이 동작하지 않는 사이트입니다. 브라우저 표준 이벤트 API를 활용한 커스텀 클릭 함수를 만들어 모든 버튼 조작에 활용했습니다.
각 공고의 상세 정보는 특정 스타일 속성을 가진 div 안에 담겨 있습니다. JavaScript로 해당 div를 일괄 수집하고, 콜론(:) 기준으로 항목명과 값을 분리해 딕셔너리로 구조화했습니다.
다운로드된 엑셀의 E열(공고명)을 기준으로 수집된 세부내역 딕셔너리와 병합합니다. 공고명이 일치하는 행에 자동으로 컬럼을 추가하고 새 파일명으로 저장합니다.
월 10시간이
약 1시간으로 줄었습니다

|
Before · 수작업
• 사이트 직접 접속 후 팝업 수동 닫기 • 업종 코드 수동 검색·선택 • 공고 건별 클릭 → 세부내역 수기 기록 • PDF 저장 및 엑셀 수작업 정리 월 소요 시간
10시간
= 연 120시간
|
→ |
After · 자동화
• 코드 실행 → 자동 접속 및 팝업 제거 • 대상 업종코드 자동 선택 • 공고 세부내역 JS 일괄 수집 • 엑셀 자동 병합 후 저장 완료 월 소요 시간
약 1시간
= 연 12시간 (108시간 절약)
|
|
정
|
"나라장터는 자동화가 불가능하다고 생각했는데, 이번에 직접 만들고 나니 '되는구나' 싶었습니다. 매달 쓰던 시간이 그냥 생겨버렸어요." 수강생 정OO / ChatGPT X Python RPA 교육 수료 · IT 운영부
|
"자동화가 절대 불가한 사이트"는
없습니다
나라장터처럼 정부·공공기관 시스템은 보안과 안정성을 이유로 표준 웹 기술 대신 자체 프레임워크를 씁니다. 이 때문에 "크롤링이 안 된다", "자동화가 막혀 있다"는 경험을 많이 합니다. 하지만 실제로는 막혀 있는 것이 아니라 다른 방식이 필요한 것입니다.
JavaScript 이벤트를 직접 발생시키는 방식은 공공 시스템 자동화의 핵심 기법 중 하나입니다. 나라장터 외에도 HRD-Net, 전자정부 포털, 사내 ERP처럼 레거시 프레임워크 기반 사이트에 동일하게 적용할 수 있습니다.
이 수강생의 사례는 "도구를 배웠다"가 아니라, 장벽을 분석하고 기술적으로 돌파했다는 점에서 특별합니다. AI와 함께 코드를 짜는 방식이 그 과정을 훨씬 빠르게 만들었습니다.
다른 방법이 필요한 것이었습니다.
공공 시스템도 파이썬으로 자동화할 수 있습니다.
같은 방식, 다른 업무에도
그대로 씁니다
나라장터 자동화에 쓰인 JS 이벤트 트리거 방식은 공공기관 포털과 레거시 사내 시스템 전반에 적용할 수 있습니다. 다음 업무들을 바로 자동화할 수 있습니다.
HRD-Net 훈련과정 모니터링 — 직업훈련 포털 접속 → 과정명·정원·승인현황 자동 수집 → 엑셀 저장
전자조달 업체 등록 현황 조회 — 특정 업종코드 등록 업체 목록 자동 추출 → 경쟁사 분석 자료 생성
사내 레거시 ERP 데이터 추출 — JS 이벤트 기반 ERP 버튼 조작 → 보고서 데이터 자동 다운로드
공공데이터포털 데이터셋 수집 — 키워드 검색 자동화 → 파일 목록 수집 → 정기 업데이트 알림
규제정보포털 법령 변경 모니터링 — 업종별 규제 변경 자동 감지 → 담당자 이메일 발송
매달 반복되는 공고 조회 업무,
코드 한 번으로 완전 자동화했습니다
IT 운영 담당자가 ChatGPT X Python RPA 교육에서 직접 만든 나라장터 업무 자동화 실전 사례 · 월 10시간 → 약 1시간, 90% 절감.