본문 바로가기
공부 & 프로젝트/파이썬

[파이썬] 웹크래핑 기초 5-2: Selenium 심화 - 로그인

by donnanoa82 2025. 10. 20.

오늘도 "나도코딩"님 영상으로 공부하기 

https://www.youtube.com/watch?v=yQ20jZwDjTE


Selenium으로 로그인 

 ------- 셀레니움을 사용하여 네이버 로그인을 할 예정입니도 -------

 

사용 세팅

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time

options = Options()
options.add_argument("--start-maximized")
options.add_experimental_option("detach", True)

 

이미 기초편에서 다룬 내용이므로 이해가 안가시면 기초편을 보시면 됩니다

 

1. 네이버 이동

# 1. 네이버 이동
browser = webdriver.Chrome(options= options)
browser.get("https://naver.com")

 

2. 로그인 버튼 클릭

기초편에서 설명했으나, 간략하게 다시 설명하자면:

  • ctrl + shift + I 눌러서 작업자 도구 들어감 > 왼쪽 상단의 네모와 화살표가  있는 이미지를 클릭 > 내가 원하는 부분의 html 을 파란박스로 확인 가능 > (확실하게 NAME/ ID 등이 나와있는 경우, By.NAME 을 치면 되지만 모르겠는 경우는 단순하게) 마우스 우클릭 > copy > copy Xpath
  • browser.find_element(By.XPATH, 'copy Xpath 내용').click()
  • time.sleep(2) : 2초 정도 대기 

# 2. 로그인 버튼 클릭
browser.find_element(By.XPATH, '//*[@id="account"]/div/a').click()
time.sleep(1)

 

3. id, pw 입력

(1) 방법 

위에서 설명했듯, xpath를 가지고 와서 진행 

***중요한 점: xpath는 "를 포함 => 오류 생성. 따라서 바깥을 '로 생성해서 copy 내용 붙여넣기 !**

즉, browser.find_element(By.XPATH, ' copy xpath 내용 ' )

(2) 방법

로그인 입력 부분의 html 확인해보면 id = "id" 이고, name= "id" 

=> By.ID, "id" 또는 By.NAME, "id" 로도 입력 가능 (XPATH 대신)

# 3. id,  pw 입력
#(1) 방법
browser.find_element(By.XPATH, '//*[@id="id"]').send_keys("naver_id")
time.sleep(1)
browser.find_element(By.XPATH, '//*[@id="pw"]').send_keys("naver_pw")
time.sleep(1)

#(2) 방법
browser.find_element(By.ID, "id").send_keys("naver_id")
time.sleep(1)
browser.find_element(By.ID, "pw").send_keys("naver_id")
time.sleep(1)

 

4. 로그인 버튼 클릭

# 4. 로그인 버튼 클릭
browser.find_element(By.XPATH, '//*[@id="log.login"]').click()
time.sleep(3)

 

5. id를 새로 입력

id/ pw가 틀려서 재입력해야할 경우, 아래와 같이 만들어주게 되면 :

이미지와 같이 이미 입력한 값 (naver_id)에 추가로 새 값 (my_id)가 뒤에 붙음

# 5. id를 새로 입력 
browser.find_element(By.ID, "id").send_keys("my_id")

# 5. id를 새로 입력 
browser.find_element(By.ID, "id").clear()
browser.find_element(By.ID, "id").send_keys("my_id")

 

그렇기 때문에 위 코드와 같이 .clear() 먼저 해주면 됨

By.ID 의 "id" 값의 내용을 삭제 후, "my_id" 내용 입력 

my_id 만 잘 들어오는 것을 확인할 수 있음

 


자, 여기까지가 로그인 하는 방법이고, 이제 로그인이 처음부터 잘 되었다고 치고 html 정보를 출력하는 방법 공부 해봅시더

6. html 정보 출력

page_source : 지금 페이지에 있는 모든 html 그대로 출력

Terminal 이미지 보시면 해당 페이지에 있는 html을 출력한 것을 볼 수 있음

# 6. html 정보 출력
print(browser.page_source)  # 지금 페이지에 있는 모든 html를 그대로 출력

 

 

7. 브라우저 종료

close() : 현재 탭만 종료

quit() : 전체 브라우저 종료. 즉, 크롬창 꺼짐

# 7. 브라우저 종료
# browser.close()  # 현재 탭만 종료
browser.quit()   # 전체 브라우저 종료