[python] 웹 스크래핑을 활용한 음악 차트 순위 추이 분석

음악 차트는 일반적으로 인기 있는 음악을 나열하여 순위를 매긴 것으로, 이를 통해 음악 시장의 동향을 파악할 수 있습니다. 웹 스크래핑을 통해 음악 차트 데이터를 수집하고, 이를 분석하여 음악의 순위 추이를 시각화하는 방법을 알아보겠습니다.

웹 스크래핑을 통한 데이터 수집

Python의 requests 라이브러리를 사용하여 음악 차트 웹페이지로부터 데이터를 가져옵니다. 해당 웹페이지의 HTML 구조를 분석하고, Beautiful Soup 라이브러리를 사용하여 원하는 데이터를 추출합니다.

예를 들어, Melon 음악 차트를 스크래핑하여 순위, 곡명, 가수 등의 정보를 가져오는 방법은 다음과 같습니다.

import requests
from bs4 import BeautifulSoup

url = 'https://www.melon.com/chart/index.htm'
response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')
chart = soup.select('table > tbody > tr')

for song in chart:
    rank = song.select_one('.rank').text
    title = song.select_one('.ellipsis.rank01').text.strip()
    artist = song.select_one('.ellipsis.rank02').text.strip()
    print(f'{rank}. {title} - {artist}')

데이터 분석 및 시각화

수집한 데이터를 분석하여 음악 차트의 순위 추이를 파악할 수 있습니다. Pandas 라이브러리를 사용하여 데이터를 정리하고, Matplotlib 또는 Seaborn 라이브러리를 활용하여 그래프를 그려 시각적으로 나타낼 수 있습니다.

특정 곡의 순위 변화를 시각화하기 위해, 예를 들어 ‘Dynamite’라는 곡의 Melon 음악 차트 순위 추이를 그래프로 나타내는 코드는 다음과 같습니다.

import pandas as pd
import matplotlib.pyplot as plt

# 데이터프레임 생성
data = {'Date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
        'Rank': [10, 5, 3, 2, 1]}
df = pd.DataFrame(data)

# 그래프 그리기
plt.figure(figsize=(10, 5))
plt.plot(df['Date'], df['Rank'], marker='o')
plt.title('Dynamite Melon Chart Ranking')
plt.xlabel('Date')
plt.ylabel('Rank')
plt.xticks(rotation=45)
plt.show()

이와 같이 웹 스크래핑을 통해 수집한 데이터를 분석하고 시각화함으로써 음악 차트의 변화를 쉽게 파악할 수 있습니다.