본문 바로가기

[Python] 셀레니움 4.0, 크롬드라이버 자동업데이트, 네이버 로그인

I am bucks 발행일 : 2023-04-22

1. 셀레니움 4.0

크롤링은 파이썬에서 정말 많이 사용됩니다. 그런데 클로링을 할 때 많이 사용되는 방법이 셀레니움(selenium)을 사용하는 경우가 많습니다. 왜냐 하면 셀레니움을 이용하면 사람이 직접 접속하는 로직을 이용하여 크롬 화면을 띄우고, 아이디와 패스워드를 입력하고 원하는 정보를 얻을 수 있기 때문입니다.

 

그런데, 셀레니움이 버전 3에서 버전 4로 바뀌면서 라이브러리 변경된 부분이 있고, 특히 크롬드라이버 설정에 있어서 많이 바뀌어서 이번 글에서는 셀레니움 버전 4에 맞는 가이드를 전해드리려고 합니다.

 

왜냐하면 셀레니움 버전 4로 업데이트되면서 Deprecated(더 이상 사용되지 않는) 오류 메시지가 발생되기 때문입니다. 그리고 앞으로는 업데이트 내용으로 파이썬 코드를 작성 하시 것이 오류 없이 잘 작동할 겁니다. 

 

2. 크롬드라이버 자동 업데이트

셀레니움에서 많이 사용되는 크롬은 업데이트가 자주 이루어집니다. 따라서 업데이트가 될 때마다 버전이 다르면 실행이 안 되는 경우가 있습니다. 그러면 새롭게 크롬드라이버를 다운로드하여야 하는데요. 이번 글에서는 크롬드라이버를 자동으로 업데이트받는 코드를 포함하였습니다.

 

3. 네이버 로그인 - Pyperclip 파이썬 클립보드 사용 모듈

파이썬 셀레니움을 사용하여 Key값을 이용하여 네이버 로그인을 하면, 캡차가 떠서 로그인이 제대로 되지 않습니다.

하지만, Pyperclip을 사용하면 로그인이 가능합니다. Pyperclip은 복사 후 붙여 넣기 클립보드 기능을 하는 파이썬 모듈입니다. 터미널 창에서 아래와 같이 설치할 수 있습니다.

pip install pyperclip

 

4. 셀레니움 4.0 및 크롬드라이버 자동 업데이트 코드(2023.4.22 기준)

pip install selenium
pip install chromedriver_autoinstaller
pip install pyautogui
pip install pyperclip

from selenium import webdriver
import chromedriver_autoinstaller
chromedriver_autoinstaller.install()
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time
import pyautogui
import pyperclip

#브라우저 꺼짐 방지
chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

#불필요한 에러 메세지 없애기
chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

#웹페이지 열기
driver = webdriver.Chrome(options=chrome_options)
driver.implicitly_wait(5)
driver.maximize_window()
driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com")

# 아이디 입력창
id = driver.find_element(By.CSS_SELECTOR, "#id")
id.click()
# id.send_keys("아이디")
pyperclip.copy("iamhappy")
pyautogui.hotkey("ctrl", "v")
time.sleep(2)
# 비밀번호 입력창
pw = driver.find_element(By.CSS_SELECTOR, "#pw")
pw.click()
# pw.send_keys("비밀번호")
pyperclip.copy("youarehappy")
pyautogui.hotkey("ctrl", "v")
time.sleep(2)

# log.login
login_btn = driver.find_element(By.CSS_SELECTOR, "#log\.login")  # \. : 이스케이프 문자
login_btn.click()

 

5. Closing

이번 글에서는 파이썬 셀레니움 4.0 버전을 이용하여 네이버에 로그인하는 코드를 알아보았습니다. 네이버 로그인 시 캡차가 뜨기 때문에, Pyperclip을 사용하면 로그인할 수 있습니다. 또한 크롬드라이버를 자동으로 업데이트하는 코드도 포함하였습니다. 감사합니다.

댓글