webdriver를 이용하면 특정 페이지를 프로그램으로 동작시킬 수 있습니다. 그 과정을 설명합니다.

 

우선 webdriver가 사용할 브라우저를 가져와야합니다.

 

Chrom : sites.google.com/a/chromium.org/chromedriver/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

sites.google.com

다운 받은 chromedriver.exe 파일을 적당한 곳에 복사해둡니다. 향후 프로그램에서 chromedriver.exe가 있는 곳의 path를 사용하여야 하므로 위치를 꼭 기억해두어야 합니다.

 

웹드라이버를 이용하여 네이버 로그인을 자동으로 하는 파이썬 예제가 많이 있습니다. 이 중 하나를 기반으로 동작하는지 확인해보겠습니다.

 

# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup

from selenium import webdriver

import time

 

driver = webdriver.Chrome("C:\\my\\chromedriver.exe")

if 1:

   driver.get("https://nid.naver.com/nidlogin.login")

   elem = driver.find_element_by_name("id")

   elem.clear()

   elem.send_keys("myid")

   pw = driver.find_element_by_name("pw")

   pw.send_keys("mypasswd")

   time.sleep(1)

   form = driver.find_element_by_id('frmNIDLogin')

   form.submit()

   time.sleep(3)

 

결과는 아래와 같습니다. 정상적으로 동작을 하지만 naver에서 프로그램으로 로그인한 것을 인지합니다. 그래서 추가로 자동입력방지 문자를 입력하는 창이 뜹니다. 

 

 

user id와 암호를 입력하는 부분을 찾는 방법입니다.

크롬 개발자도구로 들어가면 해당 페이지의 소스를 볼 수 있습니다. 소스를 보면 아래 그림과 같이 'id', 'pw'라는 id를 사용하는 것을 알 수 있습니다.

 

 

아래 함수를 이용하여 원하는 객체를 얻을 수 있습니다. user id 창을 우선 비운 후 send_key라는 함수로 본인의 id를 전송하면 화면에 해당 id가 보입니다.

 

   elem = driver.find_element_by_name("id")

   elem.clear()

   elem.send_keys("myid")

 

같은 방식으로 암호도 전송합니다. 

 

다음은 로그인 버튼을 찾아봅니다. html 소스에서 로그인에 해당하는 부분을 찾습니다. form 형태로 구성이 되어 있군요. form id에 해당하는 form을 찾은 후 submit() 함수를 이용하면 클릭한 효과가 나옵니다.

 

form = driver.find_element_by_id('frmNIDLogin')

form.submit()

 

앞에서 언급한 것과 같이 네이버 정책상 자동 로그인은 막아놓았습니다. 그래서 로그인을 하려면 추가로 이미지에 나오는 문자를 입력하여야 합니다. 이건 자동으로 하기는 어려운 부분이니 수동으로 해야합니다.

 

다음에는 네이버 주식 정보 중 일일 데이터를 얻어오는 방법에 대하여 설명합니다. 

 

 

반응형

설정

트랙백

댓글