네이버는 셀레니움으로 로그인을 시도하면 캡챠 페이지가 뜬다.
아래는 시도한 코드와 로그인이 막힌 모습.
from selenium import webdriver
driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')
driver.implicitly_wait(3)
driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com')
driver.find_element_by_name('id').send_keys('아이디')
driver.find_element_by_name('pw').send_keys('비밀번호')
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()

구글링을 해보니 클립보드를 이용해서 우회하는 법이 나왔다. 파이썬으로 클립보드를 이용하는 방법은 여기
필자가 작성한 전체 코드는 다음과 같다. 시간이 너무 빠르면 자동툴로 인식하는 경우가 있어 계속 sleep을 걸었다.
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import pyperclip
import time
#클립보드에 input을 복사한 뒤
#해당 내용을 actionChain을 이용해 로그인 폼에 붙여넣기
def copy_input(xpath, input):
pyperclip.copy(input)
driver.find_element_by_xpath(xpath).click()
ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
time.sleep(1)
id = '아이디'
pw = '비밀번호'
driver = webdriver.Chrome(r'C:\Users\smddu\Documents\chromedriver\chromedriver.exe')
driver.implicitly_wait(3)
driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com')
copy_input('//*[@id="id"]', id)
time.sleep(1)
copy_input('//*[@id="pw"]', pw)
time.sleep(1)
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()
copy_input 함수를 만들어 미리 입력해둔 id와 pw를 로그인 폼에 붙여넣었다.
함수 동작방법은 다음과 같다.
key_down 메소드를 이용해 컨트롤키를 누르고, 그 상태에서 v를 입력시킨고 key_up 메소드를 이용, 컨트롤 키를 뗀다.
즉, 클립보드에 있는 내용을 Ctrl+V를 이용해 붙여넣은 뒤 perform으로 실행시키는 형식이다.
def copy_input(xpath, input):
pyperclip.copy(input)
driver.find_element_by_xpath(xpath).click()
#클립보드 내용 붙여넣기
ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
time.sleep(1)
id = '아이디'
pw = '비밀번호'
copy_input('//*[@id="id"]', id)
copy_input('//*[@id="pw"]', pw)
잘 동작하는 걸 확인할 수 있다.

참고글
'만들기 > 크롤러' 카테고리의 다른 글
파이썬으로 크롤링하기 - WebDriverWait() 사용하기 (1) | 2019.06.24 |
---|---|
파이썬으로 크롤링하기 - 메가박스 서울 지점명 받아오기 (0) | 2019.06.23 |
selenium으로 자동로그인 하기 (0) | 2019.06.23 |
파이썬으로 크롤링하기 - selenium (0) | 2019.06.23 |
파이썬으로 크롤링하기 - Beautiful Soup (0) | 2019.06.22 |