본문 바로가기

만들기/크롤러

selenium으로 자동로그인 하기

 

앞 포스터에서 웹드라이버를 이용해 브라우저를 띄워봤다.

조금 더 나가서 셀레니움을 이용해, 다음 사이트에 자동으로 로그인을 해보려 한다.

 

시작하기 앞서, selenium의 대표적인 메소드를 간단히 알아보자.

 

get

get은 앞서 우리가 사용했던 것 처럼, URL에 접근할 수 있도록 해주는 api다.

driver.get('https://google.com')

element

element는 페이지의 단일 element에 접근할 수 있는 api로, html 태그의 속성 부분을 지정해서 접근할 수 있다.

#단일 element에 접근
driver.find_element_by_name('name')
driver.find_element_by_id('id')
driver.find_element_by_xpath('/html/body/xpath')
#여러 elements에 접근
driver.find_element_by_css_selector('#id > input.class')
driver.find_element_by_class_name('class_name')
driver.find_element_by_tag_name('h3')

 

 

1. 다음 로그인 페이지 소스코드 확인

 

로그인 페이지의 소스코드에서 id, pw 입력폼과 submit 버튼 부분을 확인했다.

아이디와 비밀번호는 name 속성을, 로그인 버튼은 id를 이용해 코드를 짜보려 한다.

 

 

2. 자동 로그인 코드 작성

필자가 작성한 코드는 다음과 같다.

from selenium import webdriver

driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')
driver.implicitly_wait(3)
driver.get('https://logins.daum.net/accounts/signinform.do?url=https%3A%2F%2Fwww.daum.net%2F')

driver.find_element_by_name('id').send_keys('아이디')
driver.find_element_by_name('pw').send_keys('비밀번호')
driver.find_element_by_id('loginBtn').click()

 

 

조금 더 자세히 살펴보자.

우선 get 메소드를 이용해 다음 로그인 페이지에 접속한 뒤, 위에서 살펴봤던 find_element를 이용했다.

소스코드에서 아이디와 비밀번호 입력 폼 태그의 name 속성이 각각 id와 pw인 것을 확인했었다.

그리고 send_keys를 이용해, 입력하고자 하는 내용을 전송한다.

driver.find_element_by_name('id').send_keys('아이디')
driver.find_element_by_name('pw').send_keys('비밀번호')

 

로그인 버튼의 id를 이용해 해당 버튼을 클릭하는 동작을 실행한다.

driver.find_element_by_id('loginBtn').click()

 

3. 실행 모습

2단계 인증을 설정해둔 터라 인증 페이지가 뜬다. 잘 작동되는 것을 확인했다.

 


 

[참고 자료]

https://beomi.github.io/gb-crawling/posts/2017-02-27-HowToMakeWebCrawler-With-Selenium.html