46 lines
1.5 KiB
Python
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')
|