프로그래밍/python

Python Internet library (selenium)이용하여 로그인 하기

해아's 2022. 10. 1. 23:18

파이썬은 많은 개발자들이 만들어둔게 많다 그중에서 셀레니움이라는 크롬브라우저를 제어하는 함수모음이 있는데

그걸 이용하여 로그인을 해보자

 

selenium을 사용하게 설정
크롬에 맞는 크롬 드라이버 설치

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
import chromedriver_autoinstaller

이전에 배운 텔레그램을 사용하여 알림 남기기

import subprocess
import pyperclip
import time
import datetime
import telegram
import os

임포트후 설치를 진행한다

pip install selenium chromedriver_autoinstaller pyperclip telegram python-telegram-bot

 

셀레니움드라이버를 실행하여 크롬을 실행하게 한다 (크롬드라이버 설치여부 확인 및 설치)

    #### driver 초기화
    option = Options()
	#크롬 드라이버가 설치되있는지 보고 맞는 버전을 다운받아서 설치한다.
	chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]
    option.add_argument("--window-size=1920,1080")
    option.add_argument("--user-data-dir=C:\\temp\\eto")
    try:
        driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
    except:
        chromedriver_autoinstaller.install('./')
        driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
    time.sleep(5)

옵션 어규먼트가 다양하게 지원된다. 윈도우 사이즈 조절및 유저 데이타 템프폴더 설정등

 

각실행후에는 슬립을 넣어 딜레이를 주는게 좋다..(컴퓨터 사양마다 약간다르게)

 

실행된 크롬으로 원하는 사이트에 접속한다

    url = "[접속할 홈페이지url]"
    driver.get(url)
    time.sleep(5)

로그인창을 찾아서 아이디 비번을 입력후 클릭하게 한다

선택방식은 class , id ,name 등 다양하게 지원한다.

    driver.find_element("xpath", '//*[@id="id"]').send_keys("[입력할 아이디]")
    driver.find_element("xpath", '//*[@name="upw"]').send_keys("[입력할 비밀번호]")
    time.sleep(2)
    driver.find_element("xpath", '//*[@class="fo_member_login"]').submit()

 

실행하여 오류나는걸 찾아서 고친다.

 

끝.

 

그외것들

 

팝업창 닫기함수 만들어서 자주 불러다 쓰자

def close_new_tabs(driver):
    tabs = driver.window_handles
    while len(tabs) != 1:
        driver.switch_to.window(tabs[1])
        driver.close()
        tabs = driver.window_handles
    driver.switch_to.window(tabs[0])

텔레그램 사용시 텔레그램 메시지 받아서 보내기

def tele_sand_msg(msg):
    ## telegram 사용 정보 확인
    telegram_option = 1
    if os.path.isfile('telegram.txt') == True:     telegram_option = 1
    if telegram_option == 1:
        import telegram
        with open('telegram.txt', mode='r', encoding='UTF8') as file: t = file.read()
        token, chat_id = t.split(',')
        bot = telegram.Bot(token=token)
    if telegram_option == 1: bot.send_message(chat_id=chat_id, text=msg)

 

 

나름 예전에 배운가락있다고 금방금방 다른분들이 만든소스 보고 수정해서 쓸수있다.

 

추후 체크해야할 자료

https://jakpentest.tistory.com/39

 

열려있는 chrome에서 크롤링하기

개요 크롤링을 하다 보면 복잡한 로그인 기능부터 구현을 해야 자신이 가져오고 싶은 데이터를 가져올 수 있는 경우가 종종 있습니다. 그 '로그인'이라는 것이 단순히 ID와 Password를 통해 이루어

jakpentest.tistory.com

 

728x90
반응형