from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import pandas as pd
from bs4 import BeautifulSoup
# Chrome 브라우저 실행
driver = webdriver.Chrome()
try:
import pandas as pd
# 텍스트 파일을 DataFrame으로 읽어오기
schools = pd.read_csv(r"C:\Users\gykwa\OneDrive\2024 - 교육데이터분석\학교도로명주소.txt")
# '학교명' 열의 값만 출력
for index, row in schools.iterrows():
school = row['학교']
# 크롤링할 웹 페이지 URL
url = "https://www.juso.go.kr/support/AddressMainSearch.do?searchKeyword=%EC%84%9C%EC%9A%B8%ED%8A%B9%EB%B3%84%EC%8B%9C+%EC%84%B1%EB%8F%99%EA%B5%AC+%EB%A7%88%EC%9E%A5%EB%A1%9C+161&dsgubuntext=&dscity1text=&dscounty1text=&dsemd1text=&dsri1text=&dssan1text=&dsrd_nm1text=&aotYn=N"
# 웹 페이지 열기
driver.get(url)
# 'searchKeyword' 입력 상자 로드 대기 (최대 10초)
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.NAME, 'searchKeyword')))
# 'searchKeyword' 입력 상자 찾기
search_input = driver.find_element(By.NAME, 'searchKeyword')
# 주소 입력
search_input.clear()
search_input.send_keys(school)
search_input.send_keys("\n")
# 검색 결과 로드 대기 (최대 10초)
# 버튼 요소 찾기
try:
button = WebDriverWait(driver, 5).until(
EC.presence_of_element_located((By.XPATH, '/html/body/div[2]/div/main/div[3]/div[2]/ol/li[1]/div[2]/ul/li[3]/span[1]'))
)
html = button.get_attribute('outerHTML')
# BeautifulSoup을 사용하여 HTML 파싱
soup = BeautifulSoup(html, 'html.parser')
# <span> 태그 안에 있는 텍스트 가져오기
span_text = soup.find('span').get_text()
# '왕십리도선동' 추출
address = span_text.split(' ')[2]
print(address)
except TimeoutException:
print("버튼을 찾지 못했습니다.")
finally:
driver.quit()