# 공공저작물 실태조사 DB수집 신유형개방지원사업 대상기관(1,160개)의 홈페이지를 사이트맵 단위로 점검하여 공공누리 부착 여부·게시물 형태·저작물 유형을 엑셀로 정리하는 데이터 수집 프로젝트. 루트 디렉터리: `D:\01.프로젝트\DB수집` --- ## 1. 프로젝트 구성 ``` DB수집/ ├─ ★[아이티앤] 공공저작물 자료조사 매뉴얼자료Ver1.2_260525.hwp # 조사 매뉴얼(v1.2) ├─ ★공공저작물 실태조사 조사원 자료 취합본(관리자)_2605212137.xlsx # 관리자 취합본 ├─ 붙임1_...개방 대상기관(1160개) 실태조사 목록...양식_260518.xlsx # 1,160개 기관 마스터 양식 ├─ 자료_취합_예시.xlsx # 작성 예시 ├─ 2단계 안내사항.txt # 2단계 분배·작성 규칙 ├─ 하이퍼링크활성화.py # K열 URL을 엑셀 하이퍼링크로 변환 │ ├─ 1주차(5.19~5.25)/ # 지자체 2개 + 부처 3개 완료 │ ├─ 인천광역시(완료)/ # 분야별 메뉴 .txt + 작업본 xlsx + 크롤러 │ ├─ 전라남도(완료)/ │ ├─ 고용노동부(완료)/ │ ├─ 과학기술정보통신부(완료)/ │ ├─ 교육부(완료)/ │ └─ 수정/ # 샘플 .xlsm + 심예진 수정본 │ └─ 2주차/ # 부처 3개 진행 ├─ 보건복지부/ # test.py = mohw.go.kr 크롤러 ├─ 성평등가족부/ # test.py = 저작물 8유형 자동 분류기 └─ 외교부/ # test.py = /list.do 게시판 건수 수집기 ``` 각 부처/지자체 폴더의 전형적 구성: - `<기관명>_홈페이지_사이트_*.xlsx` — 단계별 작업본(r1, r2, ... 결과, 완료) - `<기관명>_메뉴.txt` / `메뉴구조.txt` — 사이트맵 메뉴 텍스트 덤프 - `*.py` — 해당 기관 사이트 구조에 맞춘 크롤링 스크립트 --- ## 2. 엑셀 데이터 스키마 (작업 컬럼) 크롤러 코드 기준 핵심 열: | 열 | 번호 | 의미 | 채워지는 방법 | |----|----|------|-------------| | K | 11 | URL 주소 | 수기 입력 (1차 사이트맵 수집) | | L | 12 | 게시판/페이지 구분 | 크롤러가 URL 패턴·DOM으로 자동 판별 | | M | 13 | 게시물 수량 | 게시판일 때 `total`·`totalCount` 등에서 추출 | | N | 14 | 저작물 유형 | 본문 분석 → 어문/이미지/영상/오디오/글꼴/3D/기타/없음 | | O | 15 | 공공누리 부착 유형 | `kogl.or.kr/info/licenseType` 링크에서 1~4유형 추출 | | P | 16 | 마크 부착위치 | 게시판/게시물 | | Q | 17 | 부착 여부 보조 | (스크립트별 상이) | 데이터는 보통 3행 또는 4행부터 시작(헤더 2행). --- ## 3. 작성 규칙 (2단계 안내사항 발췌) - 대분류는 **지방자치단체 17개 우선**, 중분류는 **부/처/청 상단기관**만 (단, `_기타` 포함 제외). - `게시물형태 == 사이트`: `수량`~`마크 하이퍼링크` 공백 처리. - `저작물 유형` 및 `공공누리 연계`는 작성 X. - `공공누리 부착` 유형이 여러 개이면 모두 기재(예: `1유형, 4유형`). - 게시물 0건 또는 자물쇠 페이지 → `공공누리 부착 = 미부착`. - 게시판·게시물 동시 부착 → `마크 부착위치 = 게시판`. - 페이지에만 부착 → `마크 부착위치 = 게시물`. - 로그인·본인인증 페이지는 전부 삭제. 분배 현황(2단계 17개 지자체): 김재민(경남/울산/충남) · 구소영(경북/서울) · 심예진(강원/대전/세종/제주) · 방유정(경기/부산/전북) · 황의정(광주) · 정대원(대구/충북) · 프리랜서1(인천/전남/고용노동부/과기정통부/교육부). --- ## 4. 스크립트 카탈로그 루트 공용: - `하이퍼링크활성화.py` — K열의 http(s) URL을 엑셀 하이퍼링크로 변환 + 파란색 밑줄 스타일 적용. 입력/출력 경로는 스크립트 내부 상수. 기관별 크롤러(공통 패턴: `requests` + `BeautifulSoup` + `openpyxl`로 기존 서식을 보존하며 셀만 갱신): | 위치 | 용도 | |------|------| | `2주차/외교부/test.py` | URL이 `/list.do`로 끝나면 L열에 "게시판" 표시, `
` 건수를 M열 기입 | | `2주차/성평등가족부/test.py` | 게시판 목록에서 `fn_selectView(n)` 패턴으로 상세 URL 최대 5개 수집 → 본문(`table.brdView01` 또는 `div#contents`) 분석 → 저작물 8유형 판별 | | `2주차/보건복지부/test.py` | `mohw.go.kr` 페이지 판별, `#totalCount` 또는 `span.total b`로 건수 수집, 상세글 `article.board_view` 본문 영역 분석 | | `1주차/인천광역시(완료)/페이지_마크찾기.py` | `
` 내 `kogl.or.kr/info/licenseType{n}` 링크에서 공공누리 유형 추출 → O열 기입 | | `1주차/인천광역시(완료)/저작물유형구분.py` | 저작물 유형 자동 분류 | | `1주차/전라남도(완료)/전라남도_페이지_마크찾기_게시판.py` | 전남 게시판형 마크 탐지 | | `1주차/전라남도(완료)/페이지_마크찾기_페이지.py` | 전남 페이지형 마크 탐지 | | `1주차/고용노동부(완료)/페이지_마크찾기_allinone.py` | 고용부 전 영역 통합 마크 탐지 | 공통 동작 원칙: - `User-Agent`를 Chrome으로 위장, 0.5~1초 슬리프로 차단 회피. - `openpyxl.load_workbook` → 셀만 수정 → 새 파일명(`_r2`, `_결과`, `_완료` 등)으로 저장. - 본문 영역 셀렉터는 사이트별로 다름(상세 코드 주석 참조). --- ## 5. 산출물 네이밍 컨벤션 같은 데이터를 단계적으로 가공하면서 접미사로 버전 표시: `{기관명}_홈페이지_사이트_{r1|r2|r3|결과|완료}.xlsx` 예) `외교부.xlsx → 외교부_업데이트.xlsx → ..._활성화_r4.xlsx → ..._활성화_r5.xlsx → 외교부_완료.xlsx` `_완료` 또는 `_완료_ai` 접미사가 붙은 파일이 최종본. --- ## 6. 실행 환경 - Python 3 + `openpyxl`, `requests`, `beautifulsoup4`, `urllib3`. - Windows 경로(`D:\01.프로젝트\DB수집`)와 `ownCloud\알바\...` 경로가 스크립트에 혼재 — 실행 전 입출력 경로 확인 필요. - 일부 사이트(성평등가족부 등) SSL 검증 우회(`verify=False`) 사용.