반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

2022.03.11 - [파이썬 패키지/라이브러리&패키지 소개] - 파이썬 주요 라이브러리 정리


업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART) 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

오늘은 인스타그램으로 특정 태그의 게시물을 캡처하거나 좋아요를 누르는 등의 자동화를 위한 가장 첫 단계로 인스타그램을  selenium으로 자동 로그인하는 방법에 대해서 알아보겠습니다.

 

해당 강의를 따라하기 위해서는 인스타그램 아이디와 비밀번호가 필요하답니다.

(facebook 계정으로도 로그인 하는 방법이 있지만 그 방법은 다루지 않았습니다.)

 

그리고 크롬 드라이버가 설치되어 있어야 합니다. 혹시 안되어 있으신분들은 아래의 강의를 참고해주세요.

 

2021.03.23 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법

 

[Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도

coding-kindergarten.tistory.com

 


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)

 


오늘 준비한 내용은 여기까지입니다.

 

감사합니다. 

반응형

+ Recent posts