Actions
새기능 #5801
완료됨신유형개방 권리확인 사이트 수집
설명
개요¶
「2026 신유형개방 권리확인 및 처리」 대상 기관 홈페이지의 게시판 게시물을 Python으로 전건 크롤링하여 제출 양식(엑셀)에 자동 기재하는 작업. 기관별로 게시판 엔진(플랫폼)이 모두 달라 사이트마다 목록 구조·페이징 방식·상세 URL 규칙을 개별 분석했다.
사이트별 상세 분석 내용과 코드는 하위 일감에 각각 정리했다.
전체 통계¶
5개 사이트 / 11개 게시판 / 총 4,591건 (2003-01-11 ~ 2026-07-20)
| # | 사이트 | 게시판 | 건수 | 기간 | 작업일 |
|---|---|---|---|---|---|
| 1 | 전북경찰청 | 보도자료 | 410 | 2010-01-06 ~ 2026-07-07 | 07-10 |
| 2 | 중앙경찰학교 | 공지사항 | 505 | 2006-06-05 ~ 2026-07-06 | 07-10 |
| 3 | 광주광역시경찰청 | 보도자료 | 630 | 2017-01-02 ~ 2026-07-10 | 07-15 |
| 4 | 경기북부경찰청 | 보도자료 | 799 | 2016-04-11 ~ 2026-07-20 | 07-21 |
| 5 | KRIHS국토연구원 | 보도자료 | 1,034 | 2003-01-11 ~ 2026-07-14 | 07-21 |
| 5 | KRIHS국토연구원 | 국토용어사전 | 807 | 2009-12-18 ~ 2024-12-27 | 07-21 |
| 5 | KRIHS국토연구원 | 우수보고서 소개 | 276 | 2014-10-11 ~ 2026-07-01 | 07-21 |
| 5 | KRIHS국토연구원 | 지도로 보는 우리국토 | 77 | 2022-06-20 ~ 2025-04-21 | 07-21 |
| 5 | KRIHS국토연구원 | 국토교육영상 | 40 | 2022-06-20 ~ 2024-02-01 | 07-21 |
| 5 | KRIHS국토연구원 | 국토교육 워크북 | 8 | 2022-06-27 ~ 2024-02-27 | 07-21 |
| 5 | KRIHS국토연구원 | 국토TED | 5 | 2022-06-20 ~ 2022-06-27 | 07-21 |
제출 시트 기준 분류¶
| 구분 | 게시판 수 | 건수 |
|---|---|---|
| 권리확인 (9열 양식) | 4 | 2,873 |
| 권리처리 (12열 양식) | 7 | 1,718 |
| 합계 | 11 | 4,591 |
게시판 엔진별 분류¶
| 엔진 / 플랫폼 | 사이트 | 목록 페이징 | 상세 URL 키 |
|---|---|---|---|
| eGovFrame 표준 게시판 | 광주광역시경찰청, 경기북부경찰청 | pageIndex |
nttId |
| 자체 board.police | 전북경찰청 | startPage |
dataSid |
| 자체 BD_selectBbs | 중앙경찰학교 | q_currPage (q_rowPerPage로 일괄) |
q_bbscttSn |
| eZ .es 계열 (board/gallery) | KRIHS국토연구원 | nPage |
list_no |
| eZ 사전형 (bbsList.es) | KRIHS국토연구원 | pageIndex |
num |
공통 수집 항목¶
제출 양식의 필수 항목에 맞춰 게시판마다 아래 4가지를 수집했다.
| 열 | 항목 | 수집 방법 |
|---|---|---|
| E | 게시물 제목 | 목록 <a> 텍스트. 목록에서 잘리면(..) 상세페이지에서 전체 제목 재취득 |
| F | 게시물 내용 URL | 상세 URL (목록 URL 금지) — 게시물 고유키로 정규화해 생성 |
| H | 게시글 등록일 | 목록의 등록일 컬럼 |
| G | 저작물유형 | 공공누리 부착분만, 미부착은 공란 |
공통 사용 패키지¶
pip install openpyxl
| 패키지 | 버전 | 용도 |
|---|---|---|
| Python | 3.13.0 | 실행 환경 |
| openpyxl | 3.1.5 | xlsx 읽기·쓰기, 셀 서식 복사, 하이퍼링크 |
표준 라이브러리만 사용: urllib.request / re / json / html / ssl / gzip / time / os / concurrent.futures
별도 HTTP·파서 라이브러리(requests, BeautifulSoup, Selenium)는 쓰지 않았다. 대상 게시판이 모두 정적 HTML 목록이라
urllib+ 정규식으로 충분했고, 사내 PC에 추가 설치 없이 돌릴 수 있도록 의존성을 최소화했다.
공통 설계 규칙¶
- 전건 수집 — 목록 페이지를 1페이지부터 끝까지 순회. 마지막 페이지는 페이징 링크의 최대값으로 판정하고, 파싱 결과가 0건이면 종료.
- 중복 방지 — 게시물 고유키(
nttId/dataSid/list_no등)를set으로 관리. 상단 고정 공지가 매 페이지 반복 노출되는 게시판 대응. - URL 정규화 — 목록 링크에 붙는 검색·페이지 파라미터(
nPage,pageIndex,keyWord등)를 제거하고고유키만 남겨 재현 가능한 상세 URL을 생성. - 재시도 — 타임아웃/일시 오류 시 최대 3회 재시도(지수 백오프).
- 엑셀 반영 — 템플릿 서식을
copy(cell._style)로 그대로 승계, F열은cell.hyperlink로 링크 활성화.
검수¶
- 수집 건수 ↔ 사이트 게시판 표기 건수 대조
- 상세 URL 중복 0건 / 등록일 누락 0건 확인
- 사이트별 무작위 표본을 실제 URL로 재요청해 응답 HTML에 제목이 포함되는지 자동 대조 (오늘 작업분 24건 표본 불일치 0건)
Actions