인스타그램 크롤링 2022 개정판 코드 수록.
파이썬 크롤링

인스타그램 크롤링 2022 개정판 코드 수록.

Mr.Zee 2022. 7. 24.

파이썬을 활용해 인스타그램 계정의 데이터를 가져옵니다.

원래 단순 팔로워, 좋아요 수 등 데이터는 로그인하지 않아도 가져올 수 있었지만, 인스타그램에서 현재 금지 중이기 때문에
"로그인 후" 크롤링에 대해 다뤄보도록 하겠습니다.

3계정 이상 크롤링을 하시려는 분들은 꼭 새로운 계정을 만들어서 진행하시기 바랍니다. 활동 없는 인스타그램 계정 등의 의미 없는 반복 방문 또한 차단 사유가 있기 때문에~!!

이번 예제도 파이참(pycharm) + 파이썬 3.8 버전을 사용하였습니다.

가장 쉬운 방법. 라이브러리 활용하기 (비로그인 방문 OK)

instaloader라는 라이브러리를 활용해서 진행할 수 있습니다.

pip install instaloader


코드 설명 _확인 (22.7.24)

import instaloader

#인스타로더 사용 시작.
bot = instaloader.Instaloader()
#사용자 이름 정의 직접 기입해도 상관없습니다.
Username = input('Enter the Account Username: ')

#프로필을 정의합니다.
profile = instaloader.Profile.from_username(bot.context, Username)

print("Username: ", profile.username)
print("User ID: ", profile.userid)
print("Number of Posts: ", profile.mediacount)
print("Followers: ", profile.followers)
print("Followees: ", profile.followees)
print("Bio: ", profile.biography, profile.external_url)


출력 기대값

 

 

배너 사용은 쿠팡파트너스 활동의 일환으로, 이에 따른 소정의 수수료를 제공받습니다.

 

셀레늄 활용하기 (로그인) _ 코드 확인(22.7.24)

저는 일단 파이어폭스 브라우저를 활용했습니다. 구글 크롬 브라우저 버전을 일일이 확인하면서 진행하기가 귀찮기 때문에....

import random
import pandas as pd
from selenium import webdriver
import time

#인스타그램 계정 제어 공간입니다 아래 3곳 필드를 수정해서 사용해주세요.
id = '로그인 아이디'
password = '로그인 비밀번호'
name_list=['officialfromis_9','jiheonnibaek','k_a_z_u_h_a__']

print('browser loading..')
browser = webdriver.Firefox(executable_path='/Users/irix/PycharmProjects/a/geckodriver')
browser.delete_all_cookies()

time.sleep(5)

#인스타그램 로그인 필드
browser.get('https://www.instagram.com')
time.sleep(3.5)
username_input = browser.find_elements_by_css_selector('input._2hvTZ')[0]
username_input.send_keys(id)
time.sleep(2 + random.random() * 0.3)
password_input = browser.find_elements_by_css_selector('input._2hvTZ')[1]
password_input.send_keys(password)
time.sleep(1)
password_input.submit()
time.sleep(2)

print("login success")

#브라우저 로드까지 대기.
browser.implicitly_wait(4)
time.sleep(10)

#인스타그램 네임리스트를 통해 게시물 수, 팔로워 수, 팔로우 수를 추적합니다.
for namer in name_list:
    browser.get('https://www.instagram.com/'+namer+'/?hl=ko')
    time.sleep(1)
    #게시물 수
    mediacount = browser.find_element_by_xpath('/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/div[1]/section/main/div/header/section/ul/li[1]').text
    #팔로워 수
    followers = browser.find_element_by_xpath('/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/div[1]/section/main/div/header/section/ul/li[2]/a/div/span').text
    #팔로우 수
    followees = browser.find_element_by_xpath('/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/div[1]/section/main/div/header/section/ul/li[3]/a/div/span').text
    print(mediacount)
    print(followers)
    print(followees)

 

수집 원리?

Full Xpath를 가져와서 표기하였습니다. 좀 더 복잡한 방법을 쓴다면, 인스타그램의 graphql에 접근해서 shorcod라는 친구를 만져야 하지만 간단한 크롤링을 하고 싶다면 기피되는 게 사실이죠~

아마 2020년~21년 초까지는 script 내의 shared data에서 쉽게 추려왔던 거 같은데 현재는 기존 방식으로는 크롤링이 되지 않습니다 :)


만약 저 코드에서 사용자의 아이디도 가져오고 싶다면 어떻게 해야 할까요?
브라우저의 CSS 인스펙터 도구를 활용해서 Full Xpath를 가져오면 됩니다.

 

브라우저의 검사 기능을 활용해서 찾고자 하는 요소의 위치를 찾아내 준 뒤

 

 

다음과 같이 Full Xpath를 받아옵니다.
아이디의 경우에는 

/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/div[1]/section/main/div/header/section/div[1]/h2

를 활용하면 되겠습니다.
사실 제대로 활용하기 위해서는 판다스 등을 활용해서 csv로 저장해주거나 저장 값을 스프레드시트 등 활용 가능한 툴에 넣어놓고 쓰는 게 가장 좋습니다.
해당 코드까지 넣을 경우 이해가 어려우실 것 같아 해당 기능은 다음 글에 게재해드리도록 하겠습니다.

 

함께 보면 좋을 시리즈

2022.06.21 - [파이썬 크롤링] - 네이버 API 개발자 등록으로 쉽게 네이버 기반 크롤링 도전하기 (코드 수록)

 

네이버 API 개발자등록으로 쉽게 네이버 기반 크롤링 도전하기 (코드 수록)

편리한 크롤링을 위한 API 사용 이해하기.​​ API의 개념도. API의 역할은? 1. API는 서버와 데이터베이스에 대한 출입구 역할을 한다. : 데이터베이스에는 소중한 정보들이 저장되는데요. 모든 사

mustzee.tistory.com

 

2022.07.08 - [파이썬 크롤링] - 파이썬 200제_코드 샘플 python_src200

 

파이썬 200제_코드샘플 python_src200

간단한 코드들이 들어 있는 모음집입니다. 기본적인 내용들이 들어있는 편이고, 주석이 달려있는 코드들을 보며 간단하게(?) 학습할 수 있습니다. Zip 파일에 py 확장자 파일이 잔뜩 들어가서 인

mustzee.tistory.com

 

배너 사용은 쿠팡파트너스 활동의 일환으로, 이에 따른 소정의 수수료를 제공받습니다.

댓글

💲 추천 글