티스토리 뷰


어제 설치하고 간단한 자동로그인기능까지 구현한 것을 한번에 다 올리고싶었지만 설치과정이 길어졌네요.

현재 파이썬에 대해 알아낸 문법은...


print('') - 뭔가 출력할 때 사용.

import (API, lib 등) - 문서의 서두에 쓰이며 타언어의 include, import와 동일.

주석처리 - 원 라인은 #comment, 멀티라인은 '''comment''' (무료 홑따옴표를 3개나 붙입니다.)

그리고 중괄호라는게 따로 없고 들여쓰기가 중괄호를 대체한다는 것.

예를 들어 아래 예문은 오류입니다.

1
2
3
4
if <조건문>:
    print('ok')
    else:
    print('no!')
cs

else가 if와 같은 열에 있어야합니다.

1
2
3
4
if <조건문>:
    print('ok')
else:
    print('no!')
cs

그 외에는 모르겠습니다. 

사실 import도 import ~로 쓰는 방법이 있고 from ~ import ~로 쓰기도 하는데 에라 모르겠다하고 다 import ~ 식으로 임의로 바꾸자니 에러가 납니다. 그래서 아직 정확한 사용법을 모릅니다. 아는 분은 가르쳐주세요.

if, for, while 등은 하나의 언어만 알면 쓰임새만 다를 뿐 다 거기서 거기므로 패스하구요.


이제 본론입니다.

파이썬을 1도 모르면서 어제 설치하고 만들어보고자 했던 기능이 자동로그인 기능이었습니다.

크롤링이 목적도 아니고 단순히 웹 자동제어를 해보고자했을 뿐인데 여기에 특화된 webdriver API가 있어서 사용해보았습니다.

공홈에서 Selenium을 설치합니다.

통합이 아닌 브라우저별로 설치파일이 제공되므로 저는 크롬용을 받았습니다.

압축을 풀면 ~driver.exe 라는 파일이 생기는데 이게 설치파일이 아닙니다. 라이브러리 형태로 소스에서 로딩해서 사용하므로 적당한 곳에 넣습니다.


Selenium의 예제 중 개인적으로 유용한 기능만 뽑아보았습니다.

1
2
3
4
5
6
7
object.find_element_by_tag_id('id')
object.find_elements_by_tag_name('div')
object.find_elements_by_link_text('이슈')
object.find_elements_by_partial_link_text('실시간')
object.find_elements_by_class_name('content')
object.find_elements_by_css_selector('p.content')
object.find_element_by_xpath("//input[@name='username']")
cs

위의 공홈 링크에 가보시면 많은 명령어가 있으니 참조하세요.

참고로 element, elements 모두 사용가능합니다만 해당되는 요소가 2개 이상이라면 elements로 사용하시고 받으실 때도 다음과 같이 배열로 받아야합니다.

1
2
result = browser.find_elements_by_xpath("//input[@type='text']")
result[0].send_keys('something to input')
cs


저는 다음에서 자동로그인을 하려고 합니다. 사실은 매일 출근도장 찍는 몇 군데가 목적이지만 테스트니까요.

사용법은 이렇습니다.

1
2
3
4
5
6
7
8
9
10
import selenium.webdriver as webdriver
from selenium.webdriver.common.keys import Keys
 
browser = webdriver.Chrome('/folder name/chromedriver')
browser.get('https://www.daum.net')
browser.implicitly_wait(3)
browser.switch_to.frame('loginForm')
browser.find_element_by_xpath("//input[@id='id']").send_keys('id')
browser.find_element_by_xpath("//input[@type='password']").send_keys('pw')
browser.find_element_by_xpath("//button[@id='loginSubmit']").click()
cs

Daum은 로그인 부분이 iframe안에 있어서 swtich_to.frame()을 사용, 제어할 프레임으로 이동 후 요소들을 찾아야 합니다.

전 그것도 모르고 한참을 헤맸습니다. Holy...

이대로 쓰기엔 뭔가 밋밋합니다만 여러가지 가능성은 여러분이 살을 입혀서 채워넣으시면 됩니다.

수집이 목적이라면 주로 css_selector와 partial_link_text가 유용해보이고 저같은 경우엔 xpath하나로 다 되더군요.

포탈에서의 쓰임새 정도라면 글쎄요. 그날그날의 빅데이터를 캡쳐해서 스크랩하거나 알려주는 정도가 괜찮을 것 같긴 합니다.


전 여기에 살을 좀 보태서 제가 원하는 출첵 프로그램을 만들어보았습니다.

여러분도 원하는 기능 구현했으면 좋겠네요.


그럼 모두 즐밍~

댓글
댓글쓰기 폼