-
[Python] 페이스북 자동 로그인 프로그램 만들기(Selenium)Coding/Python 2019. 10. 8. 15:35
Selenium으로 페이스북 자동 로그인하기
파이썬으로 페이스북 자동 로그인 프로그램을 만들어본다고 생각해봅시다.
파이썬에서 제공하는 웹 크롤링 라이브러리인 Selenium을 이용하면, 브라우저에서의 작업을 자동화 할 수 있습니다.
Selenium은 URL을 받아와 단순히 html 파싱을 할 수 있는 requests 라이브러리와는 달리, 직접 브라우저 창을 켜서
작업을 할 수 있게 합니다. 무슨 소린지 한번 직접 해봅시다.
우선 Selenium 라이브러리를 install 해주세요.
pip install selenium
그 다음에 Selenium에서 webdriver를 import 합니다.
from selenium import webdriver
저는 웹 브라우저 중 Chrome을 사용하였습니다. 이제 webdriver에서 Chrome을 사용하기 위해서는
chromedriver가 필요합니다.
https://chromedriver.chromium.org/downloads
요기서 다운로드 해주세요.
Firefox, IE, Edge 등등 다양한 웹 브라우저 모두 지원하니 원하는 브라우저의 driver를 받아,
python 파일이 있는 곳과 같은 곳에 넣어줍시다.
자 이제 코드에 다음과 같이 추가해 줍시다.
from selenium import webdriver driver = webdriver.Chrome()
이제 실행시켜 보면,
이렇게 브라우저 창이 열리게 됩니다. Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있다고 나오는군요.
이제 url을 넣어 봅시다.
facebook의 url https://www.facebook.com/
을 다음과 같이 코드에 넣어 줍시다
from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.facebook.com")
이제 다시 실행시켜 보면,
요로코롬 페이스북 창이 열리는 것을 볼 수 있습니다!
이제 자동으로 이메일/전화번호 및 비밀번호를 입력하도록 해야겠죠?
그러기 위해서는 html 소스를 보고 이메일/비밀번호 입력란의 id를 알아내야 합니다.
크롬에서는
Ctrl
+Shift
+C
로 개발자 모드를 열 수 있는데요.원하는 창에 마우스를 올려서 클릭해보면 저렇게 해당 공간의 코드를 볼 수 있습니다.
저런 단순한 입력창 뿐 아니라, form, frame 모두 알 수 있으니 정말 편한 기능입니다.
이제 저 이메일 입력란의 name이 'email'이라는 것을 알아냈군요.
이제 직접 값을 넣어보겠습니다.
send_keys는 키값을 전송하여 직접 입력하게끔 할 수 있는 함수입니다.
또 Selenium에서는 find_element_by_xx로 element를 검색할 수 있는 기능을 제공하는데요.
지금 같은 경우 name을 알아냈으니 다음과 같이 코드를 추가해 줍시다.
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.facebook.com") elem = driver.find_element_by_name("email") elem.send_keys('아이디')
이러면 자동으로 'email'이란 name을 가진 element를 찾아, 그 element에 '아이디'라는 문자열 key를 전송할 것입니다.
페이스북의 email 입력 란이 어딘지를 찾아냈으니, 거기에 '아이디'라는 값을 전송하는 것입니다.
이제 같은 방법으로 비밀번호 입력란도 찾아서 넣어줍시다.
# 페이스북 자동 로그인 from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get("http://www.facebook.com") elem = driver.find_element_by_name("email") elem.send_keys('아이디') elem = driver.find_element_by_name("pass") elem.send_keys('패스워드') elem.send_keys(Keys.RETURN)
그리고 아이디와 비밀번호가 입력되었으니 로그인을 해야겠죠?
페이스북에서 아이디/비밀번호 입력 후 엔터를 누르면 알아서 로그인을 해 주는걸 응용하여,
Keys.RETURN이라는 값을 보내줍시다.
Keys에는 사람들이 보편적으로 사용하는 Enter,Shift,F1,F2 등등의 키를 저장하고 있습니다.
(별도의 import를 넣어 줍시다.)
이런 코드를 활용하면 자동으로 엔터를 누르게 해줄 수 있습니다.
자, 이제 실제로 돌려보면 자동으로 로그인이 되는 것을 확인할 수 있습니다.
(움짤이 안떠지네요 ㅠㅠ)
'Coding > Python' 카테고리의 다른 글
[BeautifulSoup] github repository 이름 크롤링하기 (0) 2019.10.11 [Python] zAI 라이브러리를 이용하여 간단한 인공지능 사용하기 - 3 (0) 2019.10.10 [Python] zAI 라이브러리를 이용하여 간단한 인공지능 사용하기 - 2 (0) 2019.10.01 [Python] input() 보다 입력속도 빠르게 입력받기 (0) 2019.10.01 [Python] 정수 여러개 동시에 입력받기 (0) 2019.10.01