공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
120 lines
6.3 KiB
Markdown
120 lines
6.3 KiB
Markdown
# 공공저작물 실태조사 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열에 "게시판" 표시, `<div class="total"><span>` 건수를 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` | `<main class="content">` 내 `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`) 사용.
|