마케터의 기록/파이썬 공부 중

파이썬으로 인스타그램 이미지 다운로드 하는 법

기록하는 마케터 2021. 6. 13. 14:31
반응형

파이썬 프로그래밍으로 업무 자동화 할 줄 아는 스마트한 퍼포먼스 마케터 되기 네번째 프로젝트!

 

이번에는 파이썬 셀레니움으로 인스타그램 포스팅의 이미지를 다운로드 하는 코드를 작성해보았다. 

 

1. 사용한 라이브러리 목록

- 인스타그램 포스팅 이미지를 다운로드 하기 위해 셀레니움을 사용했다. 

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
import requests

 

2. 인스타그램 사이트 로그인 및 팝업 종료하기

- 인스타그램 사이트에 접속한다.

ID 및 PASSWORD에 본인의 인스타그램 아이디, 비밀번호 기입하여 로그인 한다.

- 인스타그램 사이트 내부에 노출되는 팝업을 종료 해준다.

driver = webdriver.Chrome()
driver.get("https://www.instagram.com/")
driver.implicitly_wait(3)

# ID 및 PASSWORD에 본인의 인스타그램 아이디, 비밀번호 기입하여 로그인
driver.find_element_by_css_selector("#loginForm > div > div:nth-child(1) > div > label > input").send_keys("ID")
driver.find_element_by_css_selector("#loginForm > div > div:nth-child(2) > div > label > input").send_keys("PASSWORD")
driver.find_element_by_css_selector("#loginForm > div > div:nth-child(3) > button > div").click()
time.sleep(1)

# 팝업 종료
driver.find_element_by_css_selector("#react-root > section > main > div > div > div > div > button").click()
driver.find_element_by_css_selector("body > div.RnEpo.Yx5HN > div > div > div > div.mt3GC > button.aOOlW.HoLwm").click()
time.sleep(1)

 

3. 이미지 다운로드 원하는 계정에 접속한다.

- ID NAME에 이미지 다운로드 원하는 계정의 아이디를 입력한다.

- 해당 계정의 첫번째 포스팅을 클릭한다.

# ID NAME에 이미지 다운로드 원하는 계정 아이디를 기입
insta_name = driver.find_element_by_css_selector("#react-root > section > nav > div._8MQSO.Cx7Bp > div > div > div.LWmhU._0aCwM > input")
insta_name.send_keys('ID NAME')
time.sleep(1)

insta_name.send_keys(Keys.ENTER)
insta_name.send_keys(Keys.ENTER)
time.sleep(1.5)

# 첫번째 게시물 클릭
driver.find_elements_by_css_selector('._9AhH0')[0].click()
time.sleep(1)

url_list = []

 

4. 인스타그램 포스팅 이미지 다운로드 하기

- 다운로드 원하는 인스타그램 포스팅 이미지의 갯수를 A에 기입한다. 

- 예를 들어 포스팅 10개의 이미지를 다운로드 원할 경우 A에 10을 기입한다.

# 다운로드 원하는 이미지 갯수를 A에 기입
n = 0
while n <= A:
    try:
        img_url = driver.find_element_by_css_selector('div > div > div.KL4Bh > img').get_attribute('src')
        url_list.append(img_url)
    except Exception:
        pass

    driver.find_element_by_css_selector("body > div._2dDPU.CkGkG > div.EfHg9 > div > div > a._65Bje.coreSpriteRightPaginationArrow").click()
    time.sleep(1)

    n += 1

# 이미지 다운로드
for i in range(len(url_list)):
    final_url = url_list[i]
    response = requests.get(final_url)
    filename = 'image{}.jpg'.format(i)
    with open(filename, 'wb+') as f:
         f.write(response.content)

driver.quit()
반응형