정리 노트

사전 조사 본문

K-POP 아이돌 SNS 분석

사전 조사

꿈만 꾸는 학부생 2024. 2. 5. 15:39
728x90

저번 포스트를 작성하고 7일이 지났는데 그동안 계속 조사한 것은 아니고, 학회 강의에서 주어진 과제를 수행하는데 생각보다 오래 걸려서 이 사이드 프로젝트를 위해 조사할 시간이 부족했습니다...

 

이전 글에서 아래의 3가지에 대해 조사해야 할 것 같다고 판단했습니다.

  • 아이돌은 지금 어떤 SNS를 사용하고 있는지 조사(인스타그램? 팬카페? 트위터? 아님 다른 어딘가?)
  • (아이돌 제외) 요즘 사람들은 어떤 SNS를 사용하는지 조사
  • 각 SNS 별로 최소한의 회원 가입 또는 구독 등으로 어떤 데이터를 어디까지 얻어낼 수 있는지 조사

이번 포스트에서는 이들에 대한 조사 내용을 정리합니다.

요즘 사람들이 사용하는 SNS

한국갤럽조사연구소에서 작성한 갤럽리포트가 있습니다.

 

한국갤럽조사연구소

〈마켓70 2023〉은 70가지 이상의 제품·서비스·미디어 라이프스타일을 교차 분석 가능한 데이터입니다. 코로나19 팬데믹 전인 2019년부터 2023년 엔데믹에 이르기까지, 지난 5년간 우리 일상생활의

www.gallup.co.kr

이 리포트에 따르면 각 SNS의 연간 이용률은 유튜브 93%, 네이버 밴드 47%, 인스타그램 39%, 카카오스토리 37%, 페이스북 31%, 틱톡 19%, 트위터(현 X) 15% 순으로 나타났다고 합니다. 이 중 인스타그램틱톡은 2021년부터 이용률이 계속 오르는 추세였습니다.

 

요즘 아이돌이 사용하는 SNS

현재 대한민국에 아이돌은 너무 많습니다. 이들이 사용하는 SNS를 모두 조사한다는 것은 불가능에 가깝고, 애초에 올해 어떤 아이돌들이 활동하고 있는지 파악하는 것부터가 불가능이라고 봅니다. 그렇기 때문에 제 기준으로 이름이 알려진, 또는 유명한 대한민국 아이돌 30 그룹(또는 솔로)을 대상으로 조사했습니다. 30 그룹으로 생각한 이유는 중심 극한 정리에서 아이디어를 얻었습니다. 표본의 크기가 30 이상이면 모집단의 분포와 상관없이 추출된 표본들의 분포가 정규 분포를 따른다는 말에서 '혹시 30 그룹 정도만 조사해도 전체적인 유사성을 잡을 수 있지 않을까?' 생각이 들었습니다.

먼저, 대상 아이돌 그룹은 아래와 같습니다.

방탄소년단 세븐틴 뉴진스 르세라핌 아이브 투머로우바이투게더
플레이브 아이유 블랙핑크 악뮤 (여자)아이들 에스파
트와이스 레드벨벳 더보이즈 에스에프나인 에이티즈 엑소
싸이 에이비식스 크래비티 엔하이픈 보이넥스트도어 RIIZE
잇지 스테이씨 엔믹스 샤이니 전소미 펜타곤

이 가수가 아이돌인가 싶은 가수가 있을 수도 있습니다. 그래도 아이돌의 정의(청소년에게 인기가 있는 연예인)에 맞다고 판단하는 가수들입니다.

조사 방법은 간단했습니다. 네이버에 가수 이름을 검색하면 나오는 사이트들을 확인했습니다.

조사 예시 사진

처음에는 이를 일일이 검색해서 조사하려 했으나 하나씩 조사하기에는 번거롭고 시간이 오래 걸릴 것 같다는 느낌이 들었습니다. 그래서 간단한 크롤링 코드를 구현했습니다. 코드는 아래와 같다.

from bs4 import BeautifulSoup
import requests
from tqdm import tqdm

idol_list = ["방탄소년단", "세븐틴", "뉴진스", "르세라핌", "아이브", "투머로우바이투게더",
             "플레이브", "아이유", "블랙핑크", "악뮤", "(여자)아이들", "에스파",
             "트와이스", "레드벨벳", "더보이즈", "에스에프나인", "에이티즈", "엑소",
             "싸이", "에이비식스", "크래비티", "엔하이픈", "보이넥스트도어", "라이즈",
             "잇지", "스테이씨", "엔믹스", "이세계아이돌", "전소미", "펜타곤"]
request_url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query="

sns_list = []
for idol in tqdm(idol_list):
    response = requests.get(request_url + idol)
    soup = BeautifulSoup(response.text, "html.parser")
    sns_span = soup.find_all("span", attrs={'class': 'this_txt'})
    for span in sns_span:
        sns_list.append(span.string)

이대로 진행할 경우 아래와 같은 텍스트도 같이 포함되는 문제가 있었습니다.

  • 2월 19일 3집 미니앨범 EASY 발매 🎶
  • 2/3 IVE 레이의 생일을 축하합니다!🎉

이 텍스트들은 주로 생일 축하 문장이나 앨범 발매 안내문들로 숫자가 들어갑니다. 따라서 정규 표현식을 사용해 숫자가 들어간 텍스트를 제외하는 코드를 추가했습니다.

또한 '틱톡'과 'TikTok'을 다르게 판단하는 문제도 존재했는데, 이는 간단하게 if문을 추가해서 해결했습니다.

from bs4 import BeautifulSoup
import re
import requests
from tqdm import tqdm

idol_list = ["방탄소년단", "세븐틴", "뉴진스", "르세라핌", "아이브", "투머로우바이투게더",
             "플레이브", "아이유", "블랙핑크", "악뮤", "(여자)아이들", "에스파",
             "트와이스", "레드벨벳", "더보이즈", "에스에프나인", "에이티즈", "엑소",
             "싸이", "에이비식스", "크래비티", "엔하이픈", "보이넥스트도어", "라이즈",
             "잇지", "스테이씨", "엔믹스", "이세계아이돌", "전소미", "펜타곤"]
request_url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query="

sns_list = []
numbers = re.compile('\d+')
for idol in tqdm(idol_list):
    response = requests.get(request_url + idol)
    soup = BeautifulSoup(response.text, "html.parser")
    sns_span = soup.find_all("span", attrs={'class': 'this_txt'})
    for span in sns_span:
        if re.match(numbers, span.string) is not None:
            continue
            
        if sns == "TikTok":
            sns = "틱톡"
        sns_list.append(span.string)

리스트로 나열된 결과를 파이썬의 Counter 클래스를 통해 각 SNS 이름이 출현한 횟수를 세본 결과, 아래와 같았습니다.

인스타그램 26팀
X(트위터) 26팀
페이스북 25팀
유튜브 25팀
틱톡 23팀
위버스 12팀
팬카페 8팀
웨이보 5팀

플레이브, 크래비티, 보이넥스트도어, RIIZE 팀의 경우, 다른 팀과는 다른 html 태그 안에 정보가 저장돼 있어 이들이 사용하는 SNS 정보는 가져오지 못했습니다. 하지만 26팀에 대한 정보만으로도 경향을 파악하기에는 충분한 듯 하기에 이 이슈는 무시했습니다.

결과로 보았을 때 26팀 모두 인스타그램X를 사용하고, 유튜브와 틱톡도 많이 사용합니다. 저는 원래 하나의 SNS를 대상으로 프로젝트를 진행하려 했으나, 여러 SNS를 같이 고려하는 것이 한 아이돌 그룹의 SNS 활성화 지수를 더 잘 설명할 것 같다고 느꼈습니다. 각 SNS 활성화 지수의 계산 식은 이전 포스트에서 생각한 것을 그대로 사용하되, SNS마다 가중치를 부여하고 전체 활성화 지수는 각 SNS 활성화 지수의 합계로 구해야 할 것 같습니다.

어떤 데이터를 어디까지 얻어낼 수 있는지 조사

위의 두 가지를 조사하며 분석할 SNS를 유튜브, 인스타그램, X 세 가지로 정했습니다. 유튜브는 연간 이용률이 가장 높았고, X와 인스타그램은 조사 대상이었던 아이돌 가수들 모두 사용하는 SNS였기 때문입니다. 따라서 이 세 가지 SNS가 API 또는 파이썬 패키지를 지원하는지를 조사했습니다.

 

인스타그램은 파이썬에서 instaloader 패키지를 제공합니다.

 

Instaloader — Download Instagram Photos and Metadata

It is a pleasure for us to share our Instaloader to the world, and we are proud to have attracted such an active and motivating community, with so many users who share their suggestions and ideas with us. Buying a community-sponsored beer or coffee from ti

instaloader.github.io

X(트위터)도 tweepy 패키지를 제공합니다.

 

Tweepy Documentation — tweepy 4.14.0 documentation

© Copyright 2009-2023, Joshua Roesslein. Revision bb0f581f.

docs.tweepy.org

유튜브는 googleapiclient 패키지를 사용해 유튜브 재생 목록에 접근, 좋아요 수, 조회 수, 댓글 수 등의 정보들을 얻을 수 있습니다.

 

GitHub - googleapis/google-api-python-client: 🐍 The official Python client library for Google's discovery based APIs.

🐍 The official Python client library for Google's discovery based APIs. - GitHub - googleapis/google-api-python-client: 🐍 The official Python client library for Google's discovery based APIs.

github.com

 

파이썬- 유튜브 API를 활용해 유튜브 데이터 크롤링하기

https://yobro.tistory.com/190 위 사이트를 참고하여 크롤링하였습니다 이 방법을 사용하려면 우선 유튜브...

blog.naver.com

 

어느 범위까지의 데이터를 얻을 수 있는가도 조사하려 했지만 이는 어떤 데이터를 수집할지를 먼저 정하고 살펴보는 것이 효율적이라고 판단했습니다.


다음으로 진행할 일(계획)

  • 어떤 데이터를 수집할 것인가?
  • 패키지 또는 API를 사용하기 위해 필요한 사전 과정 진행

 

728x90