104 lines
4.4 KiB
Python
104 lines
4.4 KiB
Python
import pickle
|
|
import os
|
|
import time
|
|
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
|
|
import logging
|
|
|
|
# 로거 인스턴스 가져오기
|
|
logger = logging.getLogger('default_logger')
|
|
COOKIES_FILE_PATH = 'taobao_cookies.pkl'
|
|
|
|
def save_cookies(driver):
|
|
try:
|
|
with open(COOKIES_FILE_PATH, 'wb') as file:
|
|
pickle.dump(driver.get_cookies(), file)
|
|
logger.debug("쿠키 저장 완료")
|
|
except Exception as e:
|
|
logger.debug(f"쿠키 저장 중 에러 : {e}")
|
|
|
|
def load_cookies(driver):
|
|
try:
|
|
if os.path.exists(COOKIES_FILE_PATH):
|
|
with open(COOKIES_FILE_PATH, 'rb') as file:
|
|
cookies = pickle.load(file)
|
|
for cookie in cookies:
|
|
if 'expiry' in cookie:
|
|
del cookie['expiry']
|
|
driver.add_cookie(cookie)
|
|
logger.debug("쿠키 로드 완료")
|
|
return True
|
|
except EOFError as eof_error:
|
|
logger.debug(f"쿠키 로드 중 EOF 에러 발생 : {eof_error}")
|
|
return False
|
|
except Exception as e:
|
|
logger.debug(f"쿠키 로드 중 기타 에러 발생 : {e}")
|
|
return False
|
|
|
|
def check_login_status_by_iframe(driver):
|
|
logged_in_xpath = "/html/body/div[1]/div/ul[1]/li[2]/div[1]/div[2]/a"
|
|
|
|
while True:
|
|
try:
|
|
logger.debug("로그인된 상태 확인 중...")
|
|
# 로그인된 상태 확인
|
|
if driver.find_element(By.XPATH, logged_in_xpath):
|
|
user_id_text = driver.find_element(By.XPATH, logged_in_xpath).text
|
|
logger.debug(f"로그인된 상태입니다. 로그인된 ID: {user_id_text}")
|
|
return True
|
|
except:
|
|
# 로그인되지 않은 상태 확인
|
|
try:
|
|
logger.debug("로그인되지 않았습니다. 로그인이 필요합니다.")
|
|
time.sleep(5) # 5초 후 다시 체크
|
|
except:
|
|
logger.debug("로그인 상태를 확인할 수 없습니다. 잠시 후 다시 시도합니다.")
|
|
time.sleep(5) # 예외 발생 시 5초 대기 후 재시도
|
|
|
|
|
|
def check_login_status(driver):
|
|
not_logged_in_xpath = "//li[@id='J_SiteNavLogin']/div/div/a"
|
|
logged_in_xpath = "/html/body/div[1]/div/ul[1]/li[2]/div[1]/div[2]/a"
|
|
|
|
while True:
|
|
try:
|
|
logger.debug("로그인된 상태 확인 중...")
|
|
# 로그인된 상태 확인
|
|
if driver.find_element(By.XPATH, logged_in_xpath):
|
|
user_id_text = driver.find_element(By.XPATH, logged_in_xpath).text
|
|
logger.debug(f"로그인된 상태입니다. 로그인된 ID: {user_id_text}")
|
|
return True
|
|
except:
|
|
# 로그인되지 않은 상태 확인
|
|
try:
|
|
if driver.find_element(By.XPATH, not_logged_in_xpath):
|
|
logger.debug("로그인되지 않았습니다. 로그인이 필요합니다.")
|
|
time.sleep(5) # 5초 후 다시 체크
|
|
except:
|
|
logger.debug("로그인 상태를 확인할 수 없습니다. 잠시 후 다시 시도합니다.")
|
|
time.sleep(5) # 예외 발생 시 5초 대기 후 재시도
|
|
|
|
|
|
|
|
# def check_login_status(driver):
|
|
# not_logged_in_xpath = "//li[@id='J_SiteNavLogin']/div/div/a"
|
|
# logged_in_xpath = "/html/body/div[1]/div/ul[1]/li[2]/div[1]/div[2]/a"
|
|
|
|
# try:
|
|
# # 로그인된 상태 확인
|
|
# if WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, logged_in_xpath))):
|
|
# user_id_text = driver.find_element(By.XPATH, logged_in_xpath).text
|
|
# logger.debug(f"로그인된 상태입니다. 로그인된 ID: {user_id_text}")
|
|
# return True
|
|
# except TimeoutException:
|
|
# # 로그인되지 않은 상태 확인
|
|
# if WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, not_logged_in_xpath))):
|
|
# logger.debug("로그인되지 않았습니다. 로그인이 필요합니다.")
|
|
# # 로그인 유도 로직 (예: 로그인 페이지로 이동)
|
|
# return False
|
|
# except Exception as e:
|
|
# logger.debug(f"로그인 상태 확인 중 예외 발생: {e}")
|
|
# return False
|