DB_JOB/_스크립트/_probe_chungbuk5.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

62 lines
2.1 KiB
Python

"""진천군: nav#gnb 더 깊이 들어가서 실제 메뉴 찾기. + 보은군 한번 더."""
import re
import warnings
import requests
from bs4 import BeautifulSoup
warnings.filterwarnings('ignore')
UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
H = {'User-Agent': UA}
def fetch(url, timeout=20):
try:
r = requests.get(url, headers=H, timeout=timeout, verify=False, allow_redirects=True)
r.encoding = r.apparent_encoding
return r.status_code, r.url, r.text
except Exception as e:
return 0, str(e), ''
# 진천군 - find all elements with menu-like classes
print('='*70)
print('진천군 — find menu containers')
print('='*70)
_, _, html = fetch('https://www.jincheon.go.kr/home/sub.do?menukey=445')
soup = BeautifulSoup(html, 'html.parser')
# Look for elements with 'depth' / 'gnb' / 'menu' / 'sitemap' in classes
print('All elements with 100+ anchors and depth/menu/sitemap in class:')
for el in soup.find_all(['div', 'ul', 'nav', 'section']):
cls = ' '.join(el.get('class', []))
eid = el.get('id', '')
ac = len(el.find_all('a'))
if ac >= 100 and re.search(r'depth|menu|sitemap|allmenu|total|all-menu|gnb', cls + ' ' + eid, re.I):
print(f' {el.name}#{eid}.{cls[:60]} a={ac}')
# Find all .depth* classes
print('\n.depth* classes with anchors:')
for el in soup.select('[class*=depth]'):
cls = ' '.join(el.get('class', []))
ac = len(el.find_all('a'))
if ac >= 50:
print(f' {el.name}.{cls[:80]} a={ac}')
# 보은군 한번 더
print('\n' + '='*70)
print('보은군 retry')
print('='*70)
import time
time.sleep(1)
code, real, html = fetch('https://www.boeun.go.kr/www/index.do')
print(f' {code} {real[:100]}')
if code == 200:
print(' 성공! 사이트맵 후보 탐색')
from urllib.parse import urljoin
s2 = BeautifulSoup(html, 'html.parser')
for a in s2.find_all('a', href=True)[:200]:
txt = a.get_text(strip=True)
if '사이트맵' in txt or '전체메뉴' in txt or '누리집 지도' in txt:
print(f' "{txt}"{urljoin(real, a["href"])}')