본문 바로가기
파이썬/마케팅 프로그램

파이썬(Python)으로 만드는 마케팅 프로그램 #1 네이버 로그인

by 이박수 2023. 9. 27.

이제 본격적으로 마케팅 프로그램을 만들어 보자.

 

기초는 몰라도 된다. 프로젝트를 진행하면서 기초를 쌓으면 된다. 기초를 모두 공부하고 프로그램을 개발한다면 시간이 너무 오래 걸릴것이고, 흥미를 잃을 수 있다.

 

차라리 기초를 건너뛰고, 바로 프로젝트에 들어가는 것도 나쁘지 않다.

 

그래서 오늘은 네이버 로그인부터 시작해보려고 한다.

 

파이썬과 VScode, 셀레니움, 구글 드라이버가 모두 설치되었다면 네이버 로그인 하는 프로그램을 구현해보자.

 

 

 

파이썬(Python) + 셀레니움으로 네이버 로그인 하기

우선 지난번 셀레니움 및 크롬 드라이버 설치 포스팅에서 사용했던 코드를 그대로 가져오자.

코드가 기억이 나지 않는다면 아래 글에서 코드를 확인하자.

 

2023.09.21 - [파이썬/파이썬 기초] - 파이썬(Python) 셀레니움 크롬 드라이버 다운로드 설치

 

 

지난번 코드에서 크롬 드라이버로 네이버까지 접속하는데 성공했다. 이제 여기서 네이버 로그인 버튼을 눌러 로그인 화면으로 넘어가도록 해보자.

우측 상단에 있는 NAVER 로그인 버튼을 클릭해보도록 하자.

문제는 저 로그인 버튼을 어떻게 클릭하느냐가 관건이다. 우리는 저 로그인 버튼의 위치(?)만 알면 된다. 그러면 파이썬이 알아서 눌러 줄것이다. 저 버튼의 위치를 찾아보자.

 

쉽게 설명하기 위해서 위치라고 했지만 사실 좌표의 개념은 아니고, 버튼의 주소 정도로 이해하자.(사실 ID가 더 가깝긴 하지만 우선 그런 개념은 넘어가도록 하고, 주소로 설명하도록 하겠다)

 

주소를 찾기 위해서는 개발자 도구가 필요하다.  개발자 도구는 F12 키를 눌러서 열 수 있다.

네이버 화면에서 F12 키를 눌러주자.

 

F12키를 눌러주면 오른쪽에 개발자 도구 창이 나타난다. 개발자 창에서 아래의 화면에 보이는 버튼을 클릭하자.

공식적인 명칭(?)은 나도 잘 모르겠다. 아무튼 저걸 클릭해야 한다.

저 버튼을 누르면 마우스 포인터의 모양이 달라진다(회색 동그라미). 마우스 포인터의 모양이 바뀌면 찾고 싶은 주소의 버튼을 클릭해보자. 그러면 오른쪽 개발자 도구에서 특정한 HTML로 이동할 것이다. 여기서 우클릭을 하자.

개발자 도구에서 선택된 HTML 코드를 우클릭 - Copy - Copy Selector  이렇게 하면 주소(?)가 복사된다.

이걸 메모장에 붙여 넣어보자.

메모장을 열어 CTRL+ V 해보면 #account > div > a 과 같은 코드가 복사 된것을 알 수 있다. 이것이 네이버 로그인 버튼의 주소(?)라고 생각하자. 

 #account > div > a

자 이제 이렇게 찾은 주소를 파이썬에서 셀레니움을 통하여 들어가 클릭해주면 된다.

파이썬 셀레니움(Selenium) Selector 클릭하기

본격적으로 셀레니움을 이용하여 찾은 Selector를 클릭해보자. 앞에서 주소(?)라고 표현했지만 HTML의 요소가 정확한 표현일것 같다. HTML의 요소를 찾아서 클릭하는 것인데 이렇게만 알아두자. 그래도 계속 주소, 요소 라는 표현을 같이 사용하도록 하겠다.

 

우선 패키지 두개를 추가해주자. Selector를 찾아 클릭하고, 타임 딜레이를 주기위해서 필요하다.

 

from selenium.webdriver.common.by import By
import time

몇 가지 모듈을 import 한 뒤에 아래의 코드를 추가해보자.

naver_login = driver.find_element(By.CSS_SELECTOR, '#account > div > a').click()

문법은 간단하다. 우리가 조금전 Selector 요소를 복사 해 두었고, 요소는 #account > div > a 이다. 이 Selector 요소를 찾아서 클릭하라는 명령이다. 

 

문법이 직관적이어서 어렵지 않을 것이다.

다만 위 코드를 실행하기 전에 딜레이를 하나 추가해주자. 

time.sleep(1)

이렇게 추가 해 주면된다. 네이버가 실행되고, 1초 딜레이 후 네이버 로그인을 클릭하는 것이다.

전체 코드는 아래와 같다

from selenium import webdriver
from selenium.webdriver.common.by import By
import time


driver = webdriver.Chrome('./chromedriver.exe')
driver.get("https://www.naver.com")

time.sleep(1)

naver_login = driver.find_element(By.CSS_SELECTOR, '#account > div > a').click()



while(True):
    pass

실행하면 아래의 화면 처럼 될 것이다.

네이버 로그인 - 아이디(ID), 비밀번호(PW) 입력

네이버 로그인까지 왔다면 이제 아이디와 비밀번호를 입력해보자.

우선 중요한 것은 ID 입력창에 커서를 옮기는 것이다. 커서를 옮기는 방법은 간단하다. 입력창을 클릭하면 된다.

아이디 입력창을 클릭하기 위해서는 CSS_Selector의 요소가 필요하다. 위에서 한것 처럼 개발자도구를 열어서 아이디와 비밀번호의 Selector 요소를 찾아보자. 

 

정상적으로 찾았다면 아이디는 #id, 비밀번호는 #pw로 나타날 것이다. 

그럼 CSS_Selector를 통하여 #id를 클릭하고, 아이디를 입력해주면 될것 같다.

여기서 아이디를 입력할때는 아이디를 복사한뒤 붙여 넣기를 통하여 입력해야한다. 그렇지 않으면 네이버에서 캡차가 나타나 로그인이 불가능하다.

우선 아이디를 입력하는 코드부터 짜보도록 하자.

아이디는 naver_test  , 비밀번호는 password1234로 지정하고 입력해보도록 하겠다.

 

그전에 먼저 파이썬에서 복사 & 붙여 넣기를 위해서는 pyperclippyautogui 패키지가 필요하다. 각각 설치해주자.

pip install pyautogui
pip install pyperclip

그리고 아래처럼 입력해주자.

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import pyautogui
import pyperclip

N_id = "naver_test"
N_pw = "password1234"

driver = webdriver.Chrome('./chromedriver.exe')
driver.get("https://www.naver.com")

time.sleep(1)

naver_login = driver.find_element(By.CSS_SELECTOR, '#account > div > a').click()

time.sleep(1) #로그인 페이지에서 1초 딜레이 

naver_id = driver.find_element(By.CSS_SELECTOR, '#id').click()
time.sleep(1)

pyperclip.copy(N_id)
pyautogui.hotkey('ctrl','v')
time.sleep(2)


naver_pw = driver.find_element(By.CSS_SELECTOR, '#pw').click()
time.sleep(1)

pyperclip.copy(N_pw)
pyautogui.hotkey('ctrl','v')
time.sleep(2)


while(True):
    pass

N_id와 N_pw에 각자의 아이디와 비밀번호를 입력하고, 실행해보자. 아직까지 로그인 버튼을 누르는 버튼이 없기때문에 로그인은 되지 않고, 아이디와 비밀번호 입력창에 각각의 값이 입력될 것이다.

 

네이버 로그인 - 로그인 버튼 클릭

마지막으로 로그인 버튼을 눌러 로그인을 완성해보자.

아이디와 비밀번호까지 입력이 완료되었다면, 아래에 있는 로그인 버튼을 눌러 정상적으로 로그인이 되는지 확인해보도록 하자. 

 

코드에서 자신의 네이버 아이디와 비밀번호로 수정해주자.

N_id = "네이버 아이디"
N_pw = "네이버 비밀번호"

 

그리고 로그인 버튼의 CSS_Selector 요소를 찾아보자. 찾는 방법은 위와 동일하다.

 

네이버 로그인 버튼의 CSS_Selector 요소는 아래와 같다

#log\.login

 

그리고 이렇게 찾은 CSS_Selector 요소를 클릭하는 코드를 넣어주자. 한줄이면 끝난다.

naver_login_click = driver.find_element(By.CSS_SELECTOR, '#log\.login').click()

이제 최종 코드를 완성해보자.

적당히 딜레이를 주도록 하자. 너무 빨리 실행되면 에러가 발생할 수 있다.

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import pyautogui
import pyperclip

N_id = "네이버 아이디"
N_pw = "네이버 비밀번호"

driver = webdriver.Chrome('./chromedriver.exe')
driver.get("https://www.naver.com")

time.sleep(1)

naver_login = driver.find_element(By.CSS_SELECTOR, '#account > div > a').click()

time.sleep(1) #로그인 페이지에서 1초 딜레이 

naver_id = driver.find_element(By.CSS_SELECTOR, '#id').click()
time.sleep(1)

pyperclip.copy(N_id)
pyautogui.hotkey('ctrl','v')
time.sleep(2)


naver_pw = driver.find_element(By.CSS_SELECTOR, '#pw').click()
time.sleep(1)
pyperclip.copy(N_pw)
pyautogui.hotkey('ctrl','v')
time.sleep(2)


naver_login_click = driver.find_element(By.CSS_SELECTOR, '#log\.login').click()



while(True):
    pass

이렇게 코드를 입력하고 실행한다면 아래와 같이 동작할 것이다.

정상적으로 로그인이 잘 되는것을 확인할 수 있다. 

 

이렇게 네이버 로그인 과정을 다루어 보았다. 이것을 응용한다면 여러가지 마케팅 프로그램을 만들 수 있을 것이다.

하나하나 차근차근 만들어 보도록 하겠다.

 

주어진 코드를 복붙하지말고 하나하나 쳐 넣어보자. 그러면 좀더 이해가 빠를것이다.

우리는 주어진 코드를 그대로 사용하는것이 아니라 이 코드를 바탕으로 자신만의 프로그램을 개발할 수 있는 것이 중요하다. 계속 반복하여 연습해보자.