내 조건에 맞는 공공 입찰 공고를 모으는 자동화 프로그램 만들기
공식 API와 허용된 공개 목록에서 입찰 공고를 모으는 자동화 프로그램 제작 방법을 설명합니다. 업종·지역 필터, 재수집, 마감일 변경 비교와 오류 알림의 개발 범위와 검수 기준을 정리합니다.
핵심 요약
1. 업종·지역 조건에 맞는 공공 입찰 공고를 매일 모으는 자동화 프로그램을 만듭니다. 2. 공식 제공 API를 우선 연결하고, 허용된 공개 목록은 Playwright로 읽도록 개발합니다. 3. 신규 공고 판별, 재수집, 마감일 변경 비교와 오류 알림은 업무에 맞게 직접 구현합니다.
입찰 담당자에게 필요한 것은 많은 공고보다 오늘 검토할 공고를 빠짐없이 확인하는 화면입니다. 크롤링 개발 범위를 정할 때는 수집 대상과 함께 중복 처리, 변경 확인, 실패 시 재실행 기준까지 정해야 합니다. 아래 기능은 입찰 공고 수집 프로그램을 제작할 때 필요한 구현 범위입니다.
업종·지역 조건을 Excel로 등록하는 화면
입력 자료의 첫 예시는 ‘업종·지역·포함어·제외어’ 열을 넣은 조건표.xlsx입니다. pandas의 read_excel은 Excel 파일의 한 개 또는 여러 시트를 표 형태의 데이터인 DataFrame으로 읽을 수 있습니다. pandas 문서 (https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html)
읽어 온 조건을 검사하고 공고와 대조하는 기능은 별도로 개발합니다. 예를 들어 지역은 서울 또는 경기, 업종은 지정 항목과 일치하는 공고를 남기고 제외어가 있으면 빼는 규칙을 정합니다. ‘조건 미리보기’에서 적용 범위를 보여주고, 빈 지역 칸을 전국으로 볼지 입력 오류로 볼지도 검수 전에 확정합니다.

공식 API와 Playwright로 허용된 공고 읽기
수집 대상은 공식 API 안내와 이용이 허용된 공개 목록 주소로 정합니다. 연결에 앞서 대상 API 문서에서 실제 제공 항목과 호출 조건을 확인합니다. 공고번호·제목·업종·지역·마감일·원문 주소 중 받을 수 있는 항목을 정리하고, 빠진 값을 표시하는 규칙을 직접 구현합니다.
공개 목록을 읽는 경우 Playwright는 로케이터로 화면 요소를 찾고 자동 대기 기능을 제공합니다. Playwright 문서 (https://playwright.dev/docs/locators) 공고 행과 다음 페이지를 찾는 기준은 대상 화면에 맞게 작성하며, 이 기능이 수집 권한을 대신하지는 않습니다. 화면 구조가 달라져 공고를 읽지 못하면 ‘신규 공고 없음’으로 처리하지 않고 확인이 필요한 수집 오류로 알리도록 만듭니다.
Celery beat로 매일 실행하고 빠진 구간 재수집하기
설정 화면에는 매일 실행할 시각과 수집 대상을 입력하게 합니다. Celery beat는 정해진 주기로 작업을 보내고 워커라는 실행 담당 프로세스가 작업을 처리하게 합니다. Celery beat 문서 (https://docs.celeryq.dev/en/stable/userguide/periodic-tasks.html)

중복 스케줄러와 겹치는 실행을 막는 통제는 별도로 구현해야 합니다. 같은 대상의 수집이 끝나기 전에 다음 작업이 시작되면 기다리게 하고, 실패한 날짜 범위를 ‘다시 수집’ 버튼으로 지정할 수 있게 만듭니다. 최근 확인 범위를 일부 겹쳐 읽는 방식은 제공되는 조회 조건과 호출 한도를 확인해 적용하며, 재실행해도 공고가 중복 저장되지 않는지 검수합니다.
신규 공고와 마감일 변경을 나누어 보여주기
받아 온 공고는 출처와 공고 식별값을 묶어 기존 기록과 비교하도록 개발합니다. 처음 발견한 공고는 ‘신규’, 이미 있는 공고의 마감일이 달라졌다면 ‘마감일 변경’으로 구분합니다. 정정 공고가 별도 번호로 제공되는 경우에는 원공고와 연결할 수 있는 정보가 있는지 확인한 뒤 비교 기준을 정합니다.
두 번째 준비 자료는 공고번호·원문 주소·변경 전후 마감일을 적은 공고검수표.xlsx입니다. 이 자료를 기준으로 목록에 이전 마감일과 현재 마감일, 마지막 확인 시각을 표시하고 ‘원문 보기’를 연결합니다. 변경 이력은 신규 목록과 따로 확인할 수 있게 만들고, 샘플 공고의 날짜와 링크가 원문에 맞는지 대조합니다.

오류 알림과 실패 사례로 완료 조건 확인하기
오류 알림에는 어느 수집 대상에서 언제 문제가 생겼는지와 다시 확인할 범위를 담도록 개발합니다. 담당자가 알림을 누르면 해당 수집 내역으로 이동하고, 재수집 결과에서 추가된 공고와 남은 오류를 확인하게 합니다. 결과 화면에는 조회한 기간과 마지막 정상 완료 시각을 표시해 자료가 언제 기준인지 판단할 수 있게 합니다.
구체적인 실패 검수는 목록 중간에서 연결이 끊긴 상황으로 진행합니다. 일부 공고만 저장된 상태에서 같은 범위를 다시 수집한 뒤, 앞서 저장한 공고는 중복되지 않고 나머지 공고도 빠짐없이 들어오는지 확인합니다. 마감일이 바뀐 공고가 신규로 중복 등록되지 않는지, 원문 링크가 해당 공고로 열리는지도 최종 완료 조건에 포함합니다.
수집 대상 주소, 업종·지역 조건표, 마감일 변경 예시와 함께 입찰 공고 수집 자동화 프로그램 개발을 문의해 주세요. 트램스 AI 제작 문의 (https://trams.co.kr/ai-si/contact/#inquiry)
참고 자료
비슷한 AI 서비스를
사업에 적용하고 싶으신가요?
아이디어와 필요한 기능을 알려주시면 제작 범위와 방법을 검토합니다.