오류수정
This commit is contained in:
@ -13,38 +13,44 @@ script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
# 브라우저 옵션 설정
|
||||
options = Options()
|
||||
options.add_argument('--headless')
|
||||
options.add_argument('--disable-gpu')
|
||||
options.add_argument('--no-sandbox')
|
||||
options.add_argument('--disable-dev-shm-usage')
|
||||
options.add_argument('--window-size=1802,1467')
|
||||
|
||||
# 드라이버 실행
|
||||
driver = webdriver.Chrome(options=options)
|
||||
driver.set_window_size(1802, 1467) # 명시적으로 창 크기 설정
|
||||
|
||||
# 날씨 페이지 접속
|
||||
driver.get('https://www.weather.go.kr/w/weather/forecast/short-term.do#dong/4148026200/37.73208578534846/126.79463099866948')
|
||||
|
||||
wait = WebDriverWait(driver, 10)
|
||||
|
||||
# 첫 번째 탭 클릭 (날씨 탭 전환)
|
||||
# 첫 번째 탭 클릭 (안전하게 element_to_be_clickable 사용)
|
||||
tab_button = wait.until(EC.element_to_be_clickable(
|
||||
(By.XPATH, '//*[@id="digital-forecast"]/div[1]/div[3]/div[1]/div/div/a[2]')
|
||||
))
|
||||
tab_button.click()
|
||||
|
||||
# 두 번째 항목 클릭 (다시 찾기: 클릭 이후 DOM 변경되므로)
|
||||
list_button = wait.until(EC.element_to_be_clickable(
|
||||
(By.XPATH, '//*[@id="digital-forecast"]/div[1]/div[3]/ul/div[1]/a[2]')
|
||||
))
|
||||
list_button.click()
|
||||
# 두 번째 항목 클릭 (stale element 대비해서 클릭 직전 다시 찾기)
|
||||
list_button_xpath = '//*[@id="digital-forecast"]/div[1]/div[3]/ul/div[1]/a[2]'
|
||||
|
||||
for attempt in range(3): # 최대 3번 재시도
|
||||
try:
|
||||
list_button = wait.until(EC.element_to_be_clickable((By.XPATH, list_button_xpath)))
|
||||
list_button.click()
|
||||
break
|
||||
except Exception as e:
|
||||
print(f"시도 {attempt+1}: 오류 발생 - {e}. 재시도 중...")
|
||||
time.sleep(1)
|
||||
else:
|
||||
print("요소 클릭 실패. 스크립트 종료.")
|
||||
driver.quit()
|
||||
exit(1)
|
||||
|
||||
time.sleep(2) # 클릭 후 페이지 반영 대기
|
||||
|
||||
# 캡처 대상 요소 찾기
|
||||
target_element = wait.until(EC.presence_of_element_located(
|
||||
(By.XPATH, '/html/body/div[2]/section/div/div[2]')))
|
||||
(By.XPATH, '/html/body/div[2]/section/div/div[2]')
|
||||
))
|
||||
|
||||
# 파일 저장 경로 설정
|
||||
timestamp = datetime.now().strftime('%Y%m%d') # 날짜만 표시
|
||||
timestamp = datetime.now().strftime('%Y%m%d')
|
||||
save_path = os.path.join(script_dir, f'weather_capture_{timestamp}.png')
|
||||
|
||||
# 요소 스크린샷 저장
|
||||
|
||||
Reference in New Issue
Block a user