import time import requests from bs4 import BeautifulSoup # 1. 이미지에 포함된 보건복지부 URL 목록 정의 urls = [ "https://www.mohw.go.kr/menu.es?mid=a10708030000", "https://www.mohw.go.kr/menu.es?mid=a10708040000", "https://www.mohw.go.kr/menu.es?mid=a10709010000", "https://www.mohw.go.kr/menu.es?mid=a10709020000", "https://www.mohw.go.kr/menu.es?mid=a10710010000", "https://www.mohw.go.kr/menu.es?mid=a10710020000", "https://www.mohw.go.kr/menu.es?mid=a10710030000", "https://www.mohw.go.kr/menu.es?mid=a10710040000", "https://www.mohw.go.kr/menu.es?mid=a10710060000", "https://www.mohw.go.kr/menu.es?mid=a10710050000", "https://www.mohw.go.kr/menu.es?mid=a10711010000", "https://www.mohw.go.kr/menu.es?mid=a10711020000", "https://www.mohw.go.kr/menu.es?mid=a10711030000", "https://www.mohw.go.kr/menu.es?mid=a10711040000", "https://www.mohw.go.kr/menu.es?mid=a10711050000", "https://www.mohw.go.kr/menu.es?mid=a10712010000", "https://www.mohw.go.kr/menu.es?mid=a10712020000", "https://www.mohw.go.kr/menu.es?mid=a10712030000", "https://www.mohw.go.kr/menu.es?mid=a10712040000", "https://www.mohw.go.kr/menu.es?mid=a10714010000", "https://www.mohw.go.kr/menu.es?mid=a10714020000", "https://www.mohw.go.kr/menu.es?mid=a10714030000", "https://www.mohw.go.kr/menu.es?mid=a10714040000", "https://www.mohw.go.kr/menu.es?mid=a10714060000", ] # 봇(Bot) 차단을 방지하기 위한 User-Agent 설정 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } print("=== 복지 서비스 li 태그 수집 시작 ===") # 각 URL을 순회하며 데이터 수집 for idx, url in enumerate(urls, 1): try: # 웹페이지 HTML 가져오기 response = requests.get(url, headers=headers, timeout=10) # 정상적으로 페이지를 가져온 경우 (HTTP 상태 코드 200) if response.status_code == 200: soup = BeautifulSoup(response.text, "html.parser") # id가 depth4_dab인 ul 태그 찾기 -> 그 하위의 모든 li 태그 찾기 # 만약 복지부 사이트 구조상 탭 메뉴가 없다면 빈 리스트가 반환됩니다. li_tags = soup.select("ul#depth4_dab > li") li_count = len(li_tags) print(f"[{idx:02d}] URL: {url} -> 복지 항목 개수(li): {li_count}개") # 어떤 항목들이 있는지 제목(tit 클래스) 출력 (선택 사항) if li_count > 0: for li in li_tags: tit_tag = li.find("strong", class_="tit") if tit_tag: print(f" - {tit_tag.text.strip()}") else: print(f"[{idx:02d}] URL: {url} -> 접속 실패 (상태 코드: {response.status_code})") except Exception as e: print(f"[{idx:02d}] URL: {url} -> 에러 발생: {e}") # 서버 과부하 방지 및 차단 예방을 위해 0.5초간 휴식 time.sleep(0.5) print("=== 수집 완료 ===")