DB_JOB/작업파일/공공기관3/완료/4.한국인터넷진흥원/_scan_all.py
2026-06-26 09:47:44 +09:00

46 lines
1.5 KiB
Python

# coding: utf-8
import requests, re, io, sys, openpyxl
H={'User-Agent':'Mozilla/5.0','Referer':'https://www.kisa.or.kr/','X-Requested-With':'XMLHttpRequest'}
out=io.open('_scan_out.txt','w',encoding='utf-8')
def log(*a): out.write(' '.join(str(x) for x in a)+'\n')
wb=openpyxl.load_workbook('한국인터넷진흥원.xlsx')
ws=wb.active
def seq_of(url):
if not url: return None
m=re.search(r'kisa\.or\.kr/(\d+)',url)
return m.group(1) if m else None
def tablist(seq):
try:
r=requests.get('https://www.kisa.or.kr/selectTabList.do',headers=H,
params={'menu_seq':seq,'lang_type':'KO'},timeout=20)
if 'json' in r.headers.get('content-type','') and r.text.strip().startswith('['):
return r.json()
except Exception as e:
return ('ERR',str(e))
return None
# scan rows 14..max (B순번 12부터). Row index in sheet.
log('row Bnum url_seq -> tabcount [tabs]')
for row in range(14, ws.max_row+1):
k=ws.cell(row,11).value # K url
bnum=ws.cell(row,2).value
seq=seq_of(k)
if not seq:
log(row, bnum, k, '-> no-seq')
continue
data=tablist(seq)
if isinstance(data,tuple):
log(row,bnum,seq,'-> ',data); continue
if not data:
log(row,bnum,seq,'-> no-tabs')
continue
tabs=[(d.get('menu_seq'),d.get('menu_name'),d.get('content_type')) for d in data]
log(row,bnum,seq,'-> TABS(%d)'%len(tabs))
for t in tabs:
log(' ',t[0],repr(t[1]),t[2])
out.close()
print('done')