지구정복

[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기 4 (selenium - 네이버 로그인하기) 본문

데이터 엔지니어링 정복/Python

[Python] 리눅스CentOS 7에서 파이썬으로 웹 크롤링하기 4 (selenium - 네이버 로그인하기)

eeaarrtthh 2021. 5. 17. 13:10
728x90
반응형

아래처럼 네이버 로그인url에 접속한 뒤 name태그를 이용해서 값을 넣어준다.

그리고 로그인 버튼은 xpath값을 가져와서 click()이벤트를 실행한다.

id
pw
로그인버튼

 

아래와 같이 코드를 작성한다.

#https://nid.naver.com/nidlogin.login

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome('chromedriver')
driver.get('https://nid.naver.com/nidlogin.login')
driver.implicitly_wait( 300 )

#//*[@id="log.login"]

driver.find_element_by_name('id').send_keys('hoeeyz')
driver.find_element_by_name('pw').send_keys('*********')
driver.find_element_by_xpath('//*[@id="log.login"]').click()

 

 

근데 이를 실행하면 자동입력방지한다고 아래처럼 페이지가 나온다.

 

따라서 이를 피하기 위해서 다른 방법으로 로그인을 해야한다.

클립보드에 아이디와 비번을 복사했다가 붙여넣는 방식을 이용한다.

그리고 리눅스 centos의 경우 pyperclip을 설치하기 전에 xclip을 먼저 설치해줘야 한다.

리눅스에서 pyperclip 라이브러리를 설치한다.

[root@localhost ~]# yum install xclip -y
[root@localhost ~]# pip3 install pyperclip

 

그리고 이클립스 pydev에서 기존 python Interpreters를 지웠다가 다시 불러온다.

 

 

아래 코드대로 실행하면 된다. 아이디 비밀번호는 각자거 입력

#https://nid.naver.com/nidlogin.login

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pyperclip
from bs4 import BeautifulSoup
import time


driver = webdriver.Chrome('chromedriver')
driver.get('https://nid.naver.com/nidlogin.login')
driver.implicitly_wait( 300 )

#//*[@id="log.login"]

# driver.find_element_by_name('id').send_keys('hoeeyz')
# driver.find_element_by_name('pw').send_keys('***********')
# driver.find_element_by_xpath('//*[@id="log.login"]').click()

input_id = driver.find_element_by_name('id')
input_pw = driver.find_element_by_name('pw')
input_id.clear()
time.sleep(3)

#id 입력
input_id.click()
pyperclip.copy('hoeeyz')
driver.find_element_by_name('id').send_keys(Keys.CONTROL, 'v')
time.sleep(1)

#pw입력
input_pw.click()
pyperclip.copy('***********')
driver.find_element_by_name('pw').send_keys(Keys.CONTROL, 'v')
time.sleep(1)

driver.find_element_by_xpath('//*[@id="log.login"]').click()




 

근데 첫 로그인은 무조건 자동방지가 뜨는 것 같다.

처음에는 수동으로 직접 로그인해주고 로그아웃한다음에 코드 실행하면 로그인이 잘 된다. ㅎㅎ

 

 

 

728x90
반응형
Comments