Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 셀레니움으로 페이스북 자동 로그인 구현하기

파이썬에는 셀레니움(Selenium)이라는 강력한 패키지가 있으며, 이를 활용하면 웹드라이버와의 상호작용을 손쉽게 자동화할 수 있습니다. 이번 글에서는 파이썬의 셀레니움 패키지를 사용해 페이스북(Facebook) 로그인 과정을 자동으로 처리하는 방법을 단계별로 살펴보겠습니다.

구현 방식

셀레니움은 웹 브라우저의 동작을 자동화하고 제어하는 데 널리 사용되는 대표적인 도구입니다. 이 예제를 실행하려면 파이썬 환경에 셀레니움 패키지가 설치되어 있어야 하며, 파이어폭스 브라우저를 제어하기 위한 드라이버 소프트웨어인 geckodriver도 준비되어 있어야 합니다. 전체 과정은 아래 두 단계로 진행됩니다.

1단계: 셀레니움 설치

사용 중인 파이썬 환경에 셀레니움을 설치합니다. 터미널 또는 명령 프롬프트에서 다음 명령어를 실행하세요.

pip install selenium

2단계: geckodriver 다운로드 및 배치

Mozilla의 공식 GitHub 릴리스 페이지에서 운영체제에 맞는 geckodriver를 내려받습니다. 그런 다음 해당 파일을 앞으로 작성할 파이썬 스크립트와 같은 디렉터리에 위치시킵니다. 이렇게 하면 셀레니움이 별도의 경로 설정 없이 드라이버를 자동으로 인식할 수 있습니다.

준비가 끝났다면, 셀레니움 패키지에서 필요한 모듈을 임포트하여 로그인 페이지를 여는 프로그램을 작성합니다.

로그인 입력창의 id 값을 확인하려면 facebook.com 페이지에서 마우스 오른쪽 버튼을 클릭해 페이지 소스 보기를 연 뒤, 이메일·비밀번호·로그인 버튼 필드의 id를 찾으면 됩니다. 실제로 페이스북 로그인 폼은 각각 email, pass, loginbutton이라는 id를 사용합니다.

예제 코드

아래 코드에는 각 코드 조각의 목적을 설명하는 주석이 포함되어 있습니다.

from selenium import webdriver

# 파이어폭스 브라우저 열기
browser = webdriver.Firefox()

# 페이스북 URL로 이동
browser.get("https://www.facebook.com")

# 아이디, 비밀번호, 로그인 버튼 요소 가져오기
uname = browser.find_element_by_id("email")
psword = browser.find_element_by_id("pass")
submit = browser.find_element_by_id("loginbutton")

# 각 필드에 값 입력
uname.send_keys("hello@gmail.com")
psword.send_keys("thepassword")

# 로그인 버튼 클릭 자동화
submit.click()

셀레니움 4 이상 사용 시 참고 사항

셀레니움 4부터는 find_element_by_id() 메서드가 제거되었습니다. 최신 버전을 사용한다면 아래와 같이 By 클래스를 임포트하여 작성해야 합니다.

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Firefox()
browser.get("https://www.facebook.com")

uname = browser.find_element(By.ID, "email")
psword = browser.find_element(By.ID, "pass")
submit = browser.find_element(By.ID, "loginbutton")

실행 결과

위 코드를 실행하면 파이어폭스 브라우저가 자동으로 열리고, 페이스북 로그인 페이지로 이동한 뒤 지정한 아이디와 비밀번호가 각 필드에 입력되고, 마지막으로 로그인 버튼이 자동으로 클릭됩니다.

올바른 계정 정보를 입력했다면 페이스북 로그인이 자동으로 완료되고, 로그인된 화면을 바로 확인할 수 있습니다. 이처럼 사람이 직접 수행하던 반복적인 브라우저 조작을 코드 한 번으로 처리할 수 있는 것이 바로 셀레니움 자동화의 핵심 장점입니다.