# newslibrary-crawler > 네이버 뉴스 라이브러리(newslibrary.naver.com)의 1920~1999년 한국 주요 일간지 기사를 키워드 검색, 상세 필터 검색, 날짜 범위 열람 방식으로 크롤링하여 구조화된 JSON으로 저장. "크롤링" + "뉴스라이브러리/네이버뉴스/뉴스" 키워드 조합 시 사용. - Author: 송지혜 - Repository: BAHO92/korean-history-crawlers - Version: 20260209154541 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-09 - Source: https://github.com/BAHO92/korean-history-crawlers - Web: https://mule.run/skillshub/@@BAHO92/korean-history-crawlers~newslibrary-crawler:20260209154541 --- --- name: newslibrary-crawler version: 0.9.0-beta description: >- 네이버 뉴스 라이브러리(newslibrary.naver.com)의 1920~1999년 한국 주요 일간지 기사를 키워드 검색, 상세 필터 검색, 날짜 범위 열람 방식으로 크롤링하여 구조화된 JSON으로 저장. "크롤링" + "뉴스라이브러리/네이버뉴스/뉴스" 키워드 조합 시 사용. status: beta --- > **⚠️ Beta**: 이 크롤러는 베타 버전입니다. 네이버 로그인 인증이 필요하며, 사이트 구조 변경 시 동작하지 않을 수 있습니다. 문제 발견 시 [GitHub Issues](https://github.com/yourusername/korean-history-crawlers/issues)에 리포트해 주세요. # 네이버 뉴스 라이브러리 크롤링 --- ## 워크플로우 ### Phase 1: 모드 확인 사용자에게 크롤링 모드 질문: | 모드 | 설명 | 로그인 | 예시 | |------|------|--------|------| | **search** | 키워드 검색 | 불필요 | "민주화 검색해서 뉴스 크롤링해줘" | | **detail** | 상세검색 (필터) | 필요 | "경향신문에서 독립선언 상세검색해줘" | | **browse** | 날짜 범위 열람 | 불필요 | "1980-05-18~31 동아일보 크롤링해줘" | ### Phase 2: 파라미터 수집 + 확인 파라미터 수집 후 **반드시** 사용자에게 확인: #### search 모드 ``` [검색 조건 확인] - 키워드: 민주화 - 기간: 1980-01-01 ~ 1989-12-31 - 언론사: 전체 - 번들명: 민주화_80s - 저장: DB/NewsLibrary/민주화_80s/ 진행할까? ``` #### detail 모드 ``` [상세검색 조건 확인] - 키워드: 독립선언 - 기간: 1920-03-05 ~ 1945-08-15 - 언론사: 경향신문(00032), 동아일보(00020) - 섹션: 정치(100), 사회(102) - 유형: 기사(00100) - 장르: 뉴스(00101) - 번들명: 독립선언_일제 - 저장: DB/NewsLibrary/독립선언_일제/ 진행할까? ``` #### browse 모드 ``` [브라우징 조건 확인] - 기간: 1980-05-18 ~ 1980-05-31 - 언론사: 동아일보(00020) - 번들명: 광주_동아 - 저장: DB/NewsLibrary/광주_동아/ 진행할까? ``` **코드 참조**: [references/codes.md](references/codes.md) 참조 > 사용자가 확인하면 Phase 3으로 ### Phase 3: 인증 확인 (detail 모드만) detail 모드는 로그인 필요: ```bash python3 .claude/skills/newslibrary-crawler/scripts/newslibrary_auth.py verify ``` 실패 시: ```bash python3 .claude/skills/newslibrary-crawler/scripts/newslibrary_auth.py login ``` ### Phase 4: 건수 확인 `--count-only`로 결과 수 확인: ```bash python3 .claude/skills/newslibrary-crawler/scripts/newslibrary_search.py search -k "민주화" --start-date 1980-01-01 --end-date 1989-12-31 --count-only ``` 결과 확인 후 재확인: ``` [검색 결과] - 결과 수: 5,230건 크롤링 진행할까? ``` > 사용자가 확인하면 Phase 5로 ### Phase 5: 크롤링 실행 #### 1단계: 검색 결과 수집 ```bash # search 모드 python3 .claude/skills/newslibrary-crawler/scripts/newslibrary_search.py search -k "민주화" --start-date 1980-01-01 --end-date 1989-12-31 -n 민주화_80s # detail 모드 python3 .claude/skills/newslibrary-crawler/scripts/newslibrary_search.py detail -k "독립선언" --start-date 1920-03-05 --end-date 1945-08-15 --office 00032,00020 --section 100,102 --type 00100 --genre 00101 -n 독립선언_일제 # browse 모드 python3 .claude/skills/newslibrary-crawler/scripts/newslibrary_search.py browse --start-date 1980-05-18 --end-date 1980-05-31 --office 00020 -n 광주_동아 ``` #### 2단계: 본문 크롤링 ```bash python3 .claude/skills/newslibrary-crawler/scripts/newslibrary_crawler.py --input DB/NewsLibrary/{번들명}/search_results.json --name {번들명} ``` **스크립트 옵션**: #### newslibrary_search.py search | 옵션 | 설명 | 기본값 | |------|------|--------| | `-k, --keywords` | 검색 키워드 (쉼표 구분) | 필수 | | `--start-date` | 시작일 (YYYY-MM-DD) | 1920-03-05 | | `--end-date` | 종료일 (YYYY-MM-DD) | 1999-12-31 | | `--office` | 언론사 코드 (쉼표 구분) | 전체 | | `-n, --name` | 컬렉션명 | 필수 | | `-c, --count-only` | 건수만 확인 | - | #### newslibrary_search.py detail | 옵션 | 설명 | 기본값 | |------|------|--------| | `-k, --keywords` | 검색 키워드 | 필수 | | `--office` | 언론사 코드 | 전체 | | `--section` | 섹션 코드 | 전체 | | `--type` | 유형 코드 | 전체 | | `--genre` | 장르 코드 | 전체 | | `--scope` | all / title | all | | `-n, --name` | 컬렉션명 | 필수 | #### newslibrary_crawler.py | 옵션 | 설명 | 기본값 | |------|------|--------| | `-i, --input` | 입력 파일 (JSON) | 필수 | | `-n, --name` | 번들 이름 | 필수 | | `-w, --workers` | 병렬 워커 수 | 4 | | `-r, --resume` | 중단된 작업 재개 | - | | `-l, --limit` | 수집 건수 제한 (테스트용) | - | ### Phase 6: 완료 보고 + 후처리 **통계 보고**: ``` [크롤링 완료] - 총 기사: 5,230건 - 본문 수집: 5,100건 (97.5%) - 실패: 130건 - 저장: DB/NewsLibrary/민주화_80s/ ``` **인덱스 동기화**: ```bash python3 .claude/skills/newslibrary-crawler/scripts/newslibrary_index_sync.py ``` --- ## 참조 - [references/contract.md](references/contract.md): 출력 구조, 번들 네이밍 규약, 기사 JSON 스키마, 특이사항 - [references/codes.md](references/codes.md): 언론사·섹션·유형·장르 코드 참조표