정리 노트

사전 과정 - instaloader 둘러보기 본문

K-POP 아이돌 SNS 분석

사전 과정 - instaloader 둘러보기

꿈만 꾸는 학부생 2024. 2. 10. 18:07
728x90

2024.02.05 - [K-POP 아이돌 SNS 분석] - 사전 조사 글에서 준비하기로 한 것들 중 instaloader를 사용하기 위한 준비 과정에 대해 작성합니다.

패키지 설치

저는 일단 PyCharm으로 진행할 예정이라 PyCharm을 기준으로 설명합니다.

PyCharm을 사용할 때는 직접 'instaloader' 검색해서 설치할 수 있습니다. 일단, 가장 최신 버전의 것을 설치했습니다.

Pycharm에 instaloader 패키지 설치

만약 colaboratory 환경 같은 곳에서 사용한다면 아래 명령어를 사용해 설치할 수 있습니다.

!pip install instaloader

 

 

 

패키지 둘러보기

패키지에 대한 자세한 설명들은 아래 공식 사이트에서 확인하시길 바랍니다. 이 포스트에서는 극히 일부만 살펴봅니다.

 

Python Module instaloader — Instaloader documentation

Instaloader exposes its internally used methods and structures as a Python module, making it a powerful and intuitive Python API for Instagram, allowing to further customize obtaining media and metadata. Start with getting an instance of Instaloader: impor

instaloader.github.io

인스타그램 계정 이름을 통해 해당 사용자의 Profile 클래스를 가져올 수 있습니다. 이 클래스의 get_posts 함수를 통해 해당 계정의 인스타그램 포스트들의 정보를 가져올 수 있습니다.

import instaloader

loader = instaloader.Instaloader()
posts = instaloader.Profile.from_username(loader.context,
                                          'newjeans_official').get_posts()
for post in posts:
    print("Uplaod date:", post.date_local)       		# 업로드 일자
    print("Title:", post.title)                  		# 포스트 타이틀
    print("Caption:\n", post.caption)            		# 포스트 본문
    print("Tagged Users:", post.tagged_users)    		# 태그된 계정 리스트
    print("Hashtags:", post.caption_hashtags)    		# 해시태그 리스트
    print("Mentions:", post.caption_mentions)    		# 멘션된 계정 리스트
    print("Post Type:", post.typename)           		# 포스트 타입
    print("# of sidecar Post:", post.mediacount) 		# 포스트 이미지 수
    print("Sponsered Post:", post.is_sponsored)  		# 스폰서 유무
    print("Location:", post.location)            		# 위치
    print(f"Likes: {post.likes}, Comments: {post.comments}")    # 좋아요 수, 댓글 수
    break

많은 정보들을 확인할 수 있지만 제가 주목한 정보들은 아래와 같습니다.

  • date_local: 포스트가 올려진 일자
  • caption: 포스트 본문
  • mediacount: 포스트에 올려진 미디어(이미지/영상) 수
  • likes: 좋아요 수
  • comments: 댓글 수

2024.01.29 - [K-POP 아이돌 SNS 분석] - 주제 선정과 그 이유 포스트에서 chatGPT가 제시한 인스타그램 활성화 지수 계산 식에서 좋아요 수, 댓글 수, 포스트 수, 스토리 수가 있었는데 이 정보들을 instaloader를 통해 얻어서 사용할 수 있을 것 같습니다.

위 코드를 실행하면 아래와 같이 결과를 얻을 수 있습니다.

newjeans_official 계정의 인스타그램 포스트 정보 출력 화면
실제 newjeans_official 최신 인스타그램 포스트

실제 인스타그램에 접속해 뉴진스(팬은 아니고 그냥 갑자기 생각난 그룹입니다.)의 최신 포스트를 보면 내용이 일치함을 볼 수 있습니다.

 

포스트 외에도 인스타 스토리, 하이라이트 정보도 아래의 코드를 통해 얻을 수 있습니다.

import instaloader

loader = instaloader.Instaloader()

# 이 과정에서는 로그인 필요
loader.login(user='인스타그램 사용자명', passwd='인스타그램 비밀번호')

# 스토리 정보
stories = loader.get_stories(userids=[12345678910])
for story in stories:
    for item in story.get_items():
        print(item.원하는_정보)

# 하이라이트 정보
highlights = loader.get_highlights(user=12345678910)
for highlight in highlights:
    for item in highlight.get_items():
        print(item.원하는_정보)

스토리/하이라이트 정보 얻은 예시 화면

chatGPT의 제안에서 생각할 점

위에서 잠깐 얘기했듯이 chatGPT가 제안한 활성화 계산 식에서는 팔로워 증감률도 있습니다. 패키지에서는 팔로워 또는 팔로우하는 계정의 리스트를 얻을 수는 있지만 시간에 따른 증감률은 얻을 수 없습니다.

 

NewJeans의 오늘 현황, 팬덤 데이터 관측기ㅣ케이팝 레이더 (K-Pop Radar)

뉴진스의 팬덤 데이터! 실시간 뮤직비디오 조회수 추이부터 스케줄 정보까지! 차트와 유튜브, 트위터, 인스타그램 등 SNS 팔로워 순위 제공 Kpop fandom data of NewJeans at a glance! Check out all the useful data

www.kpop-radar.com

위 사이트를 들어가면 최근 90일 동안의 증감률을 체크할 수 있지만 그 이상의 기간 동안은 확인할 수 없습니다.

따라서, 제안받은 계산 식에서 증감률은 제외하고 나머지 정보들에 가중치를 조금씩 더 추가해야 할 것 같습니다.

데이터 구성

현재까지 인스타그램 데이터에 대해서 생각하는 데이터 구상은 아래와 같습니다. 이는 시간이 지나면서 바뀔 수 있습니다.

업로드 일자(정렬 기준) 포스트 미디어 수 / 하이라이트 미디어 수 포스트 좋아요 수 포스트 댓글 수

스토리는 24시간이 지나면 사라지기 때문에 instaloader 패키지도 과거의 스토리까지 잡아낼 수 없습니다. 따라서 계정에서 만들어 보관하고 있는 하이라이트의 개수를 세는 것으로 대체해야 할 것 같습니다.

728x90

'K-POP 아이돌 SNS 분석' 카테고리의 다른 글

구체화 과정  (2) 2024.02.17
googleapiclient로 Youtube 데이터 가져오기  (2) 2024.02.15
사전 과정 - tweepy 살펴보기  (0) 2024.02.10
사전 조사  (2) 2024.02.05
주제 선정과 그 이유  (0) 2024.01.29