본문 바로가기

project/Expert

[python] selenium으로 자동 로그인 하기

728x90
반응형

앞 포스터에서는 웹이 실행되고 팝업창이 뜨는 경우 팝업창을 닫는 방법에 대해 포스팅 하였다.

 

이전 포스팅

2021.08.25 - [project/Expert] - [python] selenium 설치하기 및 예제

2021.08.31 - [project/Expert] - [python] selenium 팝업창 닫기

 

[python] selenium 팝업창 닫기

셀레니움을 이용하여 웹 크롤러를 만들 때 예상치 못한 팝업창이 떠서 작동이 안되는 경우가 발생할 수 있다. 이 때 사용할 수 있는 코드를 포스팅 하겠다. (프로젝트에서 개발중인 사이트에서

ssanggo.tistory.com

 

[python] selenium 설치하기 및 예제

1차 년도에 진행한 프로젝트의 주요 내용들도 정리를 하지 못했는데,, 생각치 못했던 2차년도를 진행함에 따라 시간이 날때마다 틈틈히 관련된 내용들을 정리해 보고자 한다.. 나의 얇팍한 지식

ssanggo.tistory.com

 

 

이번 포스팅에서는 자동 로그인 구현하는 방법에 대해 포스팅 하도록 하겠다.

보통 구글에서 이미지를 크롤링 하는 경우와 정적페이지에서의 크롤링 같은 경우는 로그인이 필요로 하지 않지만, 로그인을 해야지만 우리가 필요한 정보를 제공하는 곳이 있기 때문에 그런 경우에 사용하면 좋을 것 같다.


오늘은 팝업창이 존재하는 사이트에서 팝업창을 닫는 것 까지 구현한 소스코드를 활용하여 설명하겠다. 팝업창 닫기에 대한 정보는 이전 포스팅 글을 참고하길 바란다.

2021.08.31 - [project/Expert] - [python] selenium 팝업창 닫기

 

[python] selenium 팝업창 닫기

셀레니움을 이용하여 웹 크롤러를 만들 때 예상치 못한 팝업창이 떠서 작동이 안되는 경우가 발생할 수 있다. 이 때 사용할 수 있는 코드를 포스팅 하겠다. (프로젝트에서 개발중인 사이트에서

ssanggo.tistory.com

 

[소스코드]

from selenium import webdriver
import time

path = ".\chromedriver.exe" // 크롬 드라이버가 설치된 경로
url = "https://www.ntis.go.kr/"

driver = webdriver.Chrome(path)
driver.get(url)
time.sleep(0.5)

while len(driver.window_handles) != 1:
    driver.switch_to_window(driver.window_handles[1])
    driver.close()

driver.switch_to_window(driver.window_handles[0])

 

1. F12를 눌러 개발자 도구를 통해 로그인 버튼의 element를 찾아서 click 해줘야 한다. 본 포스팅에서는 xpath를 이용할 예정이다. 참고로 ctrl + shift + C 버튼을 누르면 페이지 안에서 element를 찾을 수 있는 단축키이니 알아두길 바란다.

반응형

2. element는 오른쪽 버튼을 누르고 copy - XPath 를 누르면 해당 Copy XPath에 대한 값이 복사 된다.

 

3. find_element_by_xpath 함수를 통해 복사한 XPath를 넣어주고 click 하는 함수를 통해 눌러주면 로그인 창이 뜨게 된다.

driver.find_element_by_xpath('/html/body/div[4]/div[1]/div[2]/div[1]/button').click()

 

4. 여기서도 동일하게 F12 개발자 도구를 켜서 아이디와 비밀번호에 해당하는 element를 찾아준다. id 부분에서 name = "userid", pw 부분에서는 name = "password" 라고 되어 있는 것을 확인할 수있다. 그것을 find_element_by_name 함수를 이용하여 해당 값을 넣어주고, send_keys 함수를 통해 아이디와, 비밀번호를 입력하도록 한다.

""" 로그인 하기 """
driver.switch_to_window(driver.window_handles[1])
time.sleep(0.5)
driver.find_element_by_name('userid').send_keys('아이디')
time.sleep(0.5)
driver.find_element_by_name('password').send_keys('비밀번호')
time.sleep(0.5)
driver.find_element_by_xpath('/html/body/div/form/input').click()

 

이상.

728x90
반응형