Amazon의 Rufus Question은 로그인한 사용자만 볼 수 있습니다. 따라서 자동으로 데이터를 수집하려면 로그인을 자동화하는 과정이 필요합니다.
Amazon 로그인 페이지로 이동하여 자동으로 이메일과 비밀번호를 입력하는 기능을 구현해 봅시다.
# Amazon login credentials
amazon_email = input("Enter your Amazon email: ")
amazon_password = getpass("Enter your Amazon password: ")
우선 사용자의 Amazon 로그인 정보를 입력받아 저장합니다. getpass() 함수는 비밀번호 입력을 받아 amazon_password 변수에 저장합니다. input()과 달리 getpass()는 입력한 텍스트를 화면에 표시하지 않으므로, 보안이 필요한 비밀번호 입력에 적합합니다. getpass()를 사용하려면 getpass 모듈을 먼저 import해야 합니다.
이 함수는 Selenium을 사용하여 Amazon에 자동으로 로그인하는 기능을 구현합니다.
# Function to Log in to Amazon
def amazon_login():
driver.get("https://www.amazon.com/gp/sign-in.html")
time.sleep(3)
try:
# Enter email
email_input = driver.find_element(By.ID, "ap_email") # Locate email input field
email_input.send_keys(amazon_email) # Enter email
email_input.send_keys(Keys.RETURN) # Press Enter key
time.sleep(3)
# Enter password
password_input = driver.find_element(By.ID, "ap_password")
password_input.send_keys(amazon_password)
password_input.send_keys(Keys.RETURN)
time.sleep(5)
# Wait for an element that confirms login
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "nav-link-accountList"))
)
print("Login successful!")
except Exception as e:
print(f"Login failed: {e}")
driver.quit()
def amazon_login():
driver.get("https://www.amazon.com/gp/sign-in.html")
time.sleep(3)
amazon_login() 함수를 정의합니다. driver.get("https://www.amazon.com/gp/sign-in.html")를 사용하여 Amazon 로그인 페이지를 엽니다. time.sleep(3)로 페이지가 로드될 시간을 줍니다.
# Enter email
email_input = driver.find_element(By.ID, "ap_email") # Locate email input field
email_input.send_keys(amazon_email) # Enter email
email_input.send_keys(Keys.RETURN) # Press Enter key
time.sleep(3)
find.element(By.ID, "ap_email")를 사용하여 이메일 필드를 찾습니다. 크롬 inspect를 통해 이메일 필드 아이디가 ap_email인 것을 알 수 있었습니다.
email_input.send_keys(amazon_email)
email_input.send_keys(Keys.RETURN)
send_keys(amazon_email)로 이메일을 입력하고, send_keys(Keys.RETURN)으로 Enter 키를 눌러 다음 단계(비밀번호 입력)로 이동합니다.
password_input = driver.find_element(By.ID, "ap_password")
password_input.send_keys(amazon_password)
password_input.send_keys(Keys.RETURN)
time.sleep(5)
동일한 방식으로 비밀번호를 입력합니다.
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "nav-link-accountList"))
)
print("Login successful!")
로그인이 완료되었는지 확인하려면 로그인 후에만 보이는 요소를 찾아야 합니다.
"nav-link-accountList"는 로그인 성공 후 계정 메뉴 버튼이므로, 이 요소가 나타나면 로그인 성공으로 판단 가능합니다. 만약 요소가 없으면 WebDriverWait의 타임아웃(10초) 동안 기다리다가 여전히 요소가 없으면 TimeoutException 발생합니다.
try-except 블록을 사용하여 로그인 과정에서 오류가 발생하면 예외를 출력하고 브라우저를 종료합니다.
다음 포스팅에서 이어집니다.
'Computer Science > Project' 카테고리의 다른 글
파이썬 프로젝트 (아마존 웹사이트 웹 스크래핑) 6 | Selenium으로 제품 정보 수집하기 (2) (0) | 2025.03.21 |
---|---|
파이썬 프로젝트 (아마존 웹사이트 웹 스크래핑) 5 | Selenium으로 제품 정보 수집하기 (1) (0) | 2025.03.20 |
파이썬 프로젝트 (아마존 웹사이트 웹 스크래핑) 3 | 크롬 옵션 설정 (0) | 2025.03.18 |
파이썬 프로젝트 (아마존 웹사이트 웹 스크래핑) 2 | 프로젝트 개요, Selenium (0) | 2025.03.17 |
파이썬 프로젝트 (아마존 웹사이트 웹 스크래핑) 1 | 웹 스크래핑(Web Scraping)이란? (0) | 2025.03.16 |