DB_JOB/작업파일/_스크립트/_jangsu_emid.py
hehihoho3 df16c98366 백업: DB수집 전체 스냅샷 (공공기관2 정리 전)
공공기관2 작업 중. _temp 몽타주(재생성가능)는 제외.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:15:40 +09:00

34 lines
1.6 KiB
Python

import sys, io, re, ssl, json, urllib.request
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
ctx = ssl.create_default_context(); ctx.check_hostname=False; ctx.verify_mode=ssl.CERT_NONE
h = urllib.request.urlopen(urllib.request.Request('https://www.jangsu.go.kr/index.jangsu', headers={'User-Agent':'Mozilla/5.0'}), context=ctx, timeout=50).read().decode('utf-8','replace')
# 중분류 라벨: 106XXX000000 링크 안/근처의 span 텍스트 (img/icon 사이 허용)
mid = {}
for m in re.finditer(r'menuCd=DOM_000000(\d{6})000000"[^>]*>(.*?)</a>', h, re.S):
code = m.group(1) # 대3+중3
inner = m.group(2)
sp = re.findall(r'<span[^>]*>([^<]+)</span>', inner)
lab = next((s.strip() for s in sp if s.strip()), '')
if code[3:] != '000' and lab and code not in mid:
mid[code] = lab
tree = json.load(open(r'D:\01.프로젝트\DB수집\작업파일\_스크립트\_jangsu_tree.json', encoding='utf-8'))
old = dict(tree[''])
# 병합: 새로 찾은 라벨로 보강
added = {}
for code, lab in mid.items():
if code not in old or not old.get(code):
added[code] = lab
old.update(mid)
tree[''] = old
json.dump(tree, open(r'D:\01.프로젝트\DB수집\작업파일\_스크립트\_jangsu_tree.json','w',encoding='utf-8'), ensure_ascii=False, indent=1)
print('중분류 총:', len(old))
print('새로 채운 중분류:', len(added))
for k,v in sorted(added.items()): print(f' {k} = {v}')
# 분야별정보(106) 중분류 확인
print('\n분야별정보(106) 중분류:')
for k,v in sorted(old.items()):
if k.startswith('106'): print(f' {k} = {v}')