| # -*- coding: utf-8 -*- | |
| """기준서 게시판 전체 수집 드라이버 (warning 로그 캡처 포함). | |
| 사용법: python3 -u run_std.py 3001 | |
| - crawl_standards로 잔여 전체 수집 (state/ 재개, raw/ 보관) | |
| - 문단 체계 warning(kasb.parsers)을 data/std_warnings_<board>.log + stdout에 기록 | |
| """ | |
| import logging | |
| import sys | |
| from crawler import DATA | |
| from standards_crawler import STD_BOARDS, crawl_standards | |
| board = sys.argv[1] if len(sys.argv) > 1 else "3001" | |
| logger = logging.getLogger("kasb.parsers") | |
| logger.setLevel(logging.WARNING) | |
| _fh = logging.FileHandler(DATA / ("std_warnings_" + board + ".log"), encoding="utf-8") | |
| _fh.setFormatter(logging.Formatter("%(asctime)s %(message)s")) | |
| logger.addHandler(_fh) | |
| _sh = logging.StreamHandler(sys.stdout) # 모니터가 [WARN] 라인을 잡도록 stdout | |
| _sh.setFormatter(logging.Formatter("[WARN] %(message)s")) | |
| logger.addHandler(_sh) | |
| print("########## {} ({}) 수집 시작 ##########".format(board, STD_BOARDS[board]["source"]), | |
| flush=True) | |
| saved, skipped = crawl_standards(board) | |
| print("\n########## {} 완료: 신규 {}건, 스킵 {}건 ##########".format(board, saved, skipped), | |
| flush=True) | |