파이썬(Python)

[ 크롤링-Selenium ] 웹 크롤링 네이버 로그인 하기, 캡챠 없이 로그인 하기

카루루1007 2023. 12. 12. 00:15
728x90
반응형
SMALL

[ 들어가며 ]

 

selenium을 사용해

네이버 로그인을 하게 되면

캡챠가 나타나면서

로그인하기가 쉽지 않게 되어 있습니다.

 

오늘은 간단하게

selenium을 사용하여

네이버에 로그인하는 방법을  

알아보겠습니다.

 

[ 전체 코드 ]

반응형
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

import time

browser = webdriver.Edge()


URL = 'https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/'
browser.get(URL)
browser.implicitly_wait(10)

id = "아이디"
password = "비밀번호"

browser.execute_script(f"document.getElementsByName('id')[0].value='{id}'")
time.sleep(1)

browser.execute_script(f"document.getElementsByName('pw')[0].value='{password}'")
time.sleep(1)

browser.find_element(By.XPATH, '//*[@id="log.login"]').click()

time.sleep(1)

browser.execute_script("window.location.href ='https://www.naver.com'")

 

[ 코드 설명 ]

 

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

import time

이 부분은 selenium 및 관련 모듈을 가져오는 부분입니다.

webdriver 모듈은 브라우저를 자동으로 조작할 수 있게 해 주며, 

By와 Keys 모듈은 웹 요소를 찾고 키보드 이벤트를 시뮬레이션하는 데 사용됩니다. 

time 모듈은 간단한 대기 시간을 만들기 위해 사용됩니다.

 

browser = webdriver.Edge()

이 코드는 edge 브라우저를 사용하겠다는 코드입니다.

 

URL = 'https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/'
browser.get(URL)

이 코드는 

get 함수를 사용해 

해당 URL로 접속합니다.

 

browser.implicitly_wait(10)

이 코드는 브라우저가 로딩될때까지

기다리는 코드로 

최대 10초까지 기다립니다.

10초 이내로 로딩이 된다면,

더 이상 기다리지 않고 다음 코드를 실행합니다.

728x90
id = "아이디"
password = "비밀번호"

browser.execute_script(f"document.getElementsByName('id')[0].value='{id}'")
time.sleep(1)

browser.execute_script(f"document.getElementsByName('pw')[0].value='{password}'")
time.sleep(1)

 

위 코드는 네이버 아이디와 비밀번호를 설정하는 부분입니다. 

execute_script 함수를 사용하여 

JavaScript 코드를 실행하여 아이디와 비밀번호를 입력합니다.

이 부분이 가장 중요합니다.

JavaScript 코드를 실행하여 

아이디와 비밀번호를 입력하는 이유는

Selenium의 요소 찾기 함수를 쓰게 되면

캡챠가 나타나 

별도의 작업을 해주어야 하는데

JavaScript 코드를 사용하면

캡챠를 건너뛸 수 있습니다.

 

browser.find_element(By.XPATH, '//*[@id="log.login"]').click()
time.sleep(1)

로그인 버튼을 클릭합니다.

 

browser.execute_script("window.location.href ='https://www.naver.com'")

로그인이 성공하면

네이버 메인페이지로 이동합니다.

위 코드를 넣은 이유는

로그인을 성공하면

기기를 등록하겠냐는 화면이 나타나는데

그냥 강제로 네이버 메인페이지로 이동을 시키는 코드입니다.

 

[ 마치며 ]

 

쉽게 접근할 수 있는 페이지를 크롤링할 경우에는

로그인을 할 필요가 없지만

카페와 같이 로그인이 된 상태에서만

글을 볼 수 있는 페이지를 

크롤링하기 위해서는 

로그인이 필수요소가 됩니다. 

728x90
반응형
LIST