안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.
오늘은 인스타그램으로 특정 태그의 게시물을 캡처하거나 좋아요를 누르는 등의 자동화를 위한 가장 첫 단계로 인스타그램을 selenium으로 자동 로그인하는 방법에 대해서 알아보겠습니다.
해당 강의를 따라하기 위해서는 인스타그램 아이디와 비밀번호가 필요하답니다.
(facebook 계정으로도 로그인 하는 방법이 있지만 그 방법은 다루지 않았습니다.)
그리고 크롬 드라이버가 설치되어 있어야 합니다. 혹시 안되어 있으신분들은 아래의 강의를 참고해주세요.
2021.03.23 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법
1. 패키지 import
가장 먼저 할 일은 당연히 웹 자동화를 위한 필수 패키지를 불러오는 일입니다.
# step1. 필요한 패키지와 모듈 불러오기
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
2. 크롬 드라이버 실행 및 인스타그램 로그인 화면 출력
그 다음은 크롬 드라이버를 실행하고, 인스타그램 로그인 url로 이동해보겠습니다. 아래의 코드의 경로 대신에 여러분들의 크롬 드라이버(chromedriver.exe)가 있는 경로를 입력해주어야 한다는 것 주의해주세요.
driver = webdriver.Chrome(r"C:\Users\SANGWOO\Desktop\chromedriver.exe")
driver.get("https://www.instagram.com/accounts/login/")
time.sleep(1)
3. 아이디 & 비밀번호 입력 후 엔터
다음으로 해줄 일은 아이디와 비밀번호를 입력하고 엔터를 눌러주는 것입니다.
# 인스타 아이디
id = "여러분의 아이디를 입력해주세요"
# 비밀번호
pw = "여러분의 비밀번호를 입력해주세요"
# id와 pw를 입력하는 창의 요소 정보 획득
input = driver.find_elements_by_tag_name("input")
# 아이디를 입력
input[0].send_keys(id)
# 비밀번호 입력
input[1].send_keys(pw)
# 엔터
input[1].send_keys(Keys.RETURN)
time.sleep(5)
4. 옵션 설정 단계 통과하기
위에서 로그인을 하고나면 아래와 같은 화면이 출력됩니다. 그것도 2개나 말이죠.
둘 모두 '나중에 하기' 버튼을 찾아서 클릭해서 장애물을 극복해줍시다!
# 로그인 정보 저장 여부 ("나중에 하기 버튼 클릭")
btn_later1 = driver.find_element_by_class_name('_acan._acao._acas')
btn_later1.click()
time.sleep(5)
# 알림 설정 ("나중에 하기 버튼 클릭")
btn_later2 = driver.find_element_by_class_name('_a9--._a9_1')
btn_later2.click()
참고로 저는 보통 xpath로 element를 찾는 방식을 선호하는데, 하루만에 xpath가 변경되거나 알림 설정의 '나중에 하기' 버튼을 클릭할 때는 잘 작동하지 않아서 class_name을 이용했습니다.
여기까지 하면 로그인이 완료되고 여러분들의 인스타그램 홈화면이 나올거예요.
5. 전체코드 (좀 더 세련된 코드)
전체 코드를 함수 개념을 이용해서 좀 더 깔끔하게 정리했습니다. 위에서 코드가 실행되는 흐름을 이해하셨다면 아래의 코드를 사용하시면 됩니다.
# step1.필요한 패키지와 모듈 불러오기
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# step2.아이디, 비밀번호 설정
id = "여러분의 아이디를 입력해주세요"
pw = "여러분의 비밀번호를 입력해주세요"
# step3.크롬 웹드라이버 실행
driver = webdriver.Chrome(r"C:\Users\SANGWOO\Desktop\chromedriver.exe")
# step4.인스타그램 로그인 함수 정의
def login(id, pw):
# 로그인 페이지로 이동
driver.get("https://www.instagram.com/accounts/login/")
time.sleep(1)
# id와 pw를 입력하는 창의 요소 정보 획득
input = driver.find_elements_by_tag_name("input")
# 아이디를 입력
input[0].send_keys(id)
# 비밀번호 입력
input[1].send_keys(pw)
# 엔터
input[1].send_keys(Keys.RETURN)
time.sleep(5)
# 로그인 정보 저장 여부 팝업창 제거 ("나중에 하기 버튼 클릭")
btn_later1 = driver.find_element_by_class_name('_acan._acao._acas')
btn_later1.click()
time.sleep(5)
# 알림 설정 팝업창 제거 ("나중에 하기 버튼 클릭")
btn_later2 = driver.find_element_by_class_name('_a9--._a9_1')
btn_later2.click()
# step5.로그인 함수 실행
login(id,pw)
오늘 준비한 내용은 여기까지입니다.
감사합니다.