데이터 스크래핑은 웹사이트에서 데이터를 자동으로 수집하는 것으로 설명할 수 있으며, Spotify의 경우 트랙, 아티스트, 앨범 및 기타 분석이나 음악 애플리케이션 제작에 유용한 요소에 대한 정보를 수집하는 것을 의미합니다.
Python을 사용하면 아티스트의 이름과 트랙뿐만 아니라 Spotify 재생목록을 추출할 수 있습니다. 이는 규칙을 위반하지 않고 합법적으로 데이터를 얻을 수 있는 Spotify API 덕분에 가능합니다. 그러나 API가 필요한 도구를 제공하지 않는 경우 웹 스크래핑을 사용할 수 있습니다. BeautifulSoup과 Selenium은 Spotify 스크래핑에 적합합니다.
이 Spotify 데이터 스크래핑 튜토리얼에서는 라이브러리를 설치하고, Spotify API로 작업하고, 스크래핑을 적용하고, 데이터를 CSV로 저장하는 방법을 배웁니다.
따라서 Python을 사용해 Spotify 데이터를 스크랩하는 데 어떤 도구가 적합한지 이미 알고 있습니다. 이제 필요한 라이브러리를 설치하는 방법을 살펴보겠습니다:
pip install beautifulsoup4
pip install selenium
pip install requests
그렇다면 각각의 용도는 무엇일까요?
Selenium이 브라우저를 제어하고 Spotify와 상호 작용할 수 있도록 하려면 웹 드라이버가 필요합니다. 이것은 페이지를 자동으로 열고, 버튼을 클릭하는 등의 작업을 수행할 수 있는 특수 소프트웨어입니다.
크롬드라이버를 사용하려면 공식 웹사이트에서 다운로드한 다음 압축을 풀고 경로를 저장하세요.
from selenium import webdriver
driver_path = "C:/webdriver/chromedriver.exe" # 경로로 바꾸기
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")
Spotify 재생 목록을 스크랩할 때는 페이지의 HTML 코드를 분석하여 필요한 정보가 포함된 요소를 확인해야 합니다. 아래 단계별 가이드에 따라 Python Spotify 재생 목록 스크래핑을 시작해 보겠습니다.
브라우저에서 F12를 누르면 필요한 요소들이 위치한 HTML 구조를 확인할 수 있습니다. 이러한 구조의 예시입니다:
<div class="tracklist-row">
<span class="track-name">name</span>
<span class="artist-name">artist</span>
<span class="track-duration">3:45</span>
</div>
정보를 수집하기 위해 Selenium을 사용하여 동적 콘텐츠를 로드하고 BeautifulSoup을 사용하여 HTML을 구문 분석합니다.
from selenium import webdriver
import time
from bs4 import BeautifulSoup
아래는 Python을 사용하여 재생 목록 페이지를 열고 HTML 코드를 분석하여 노래에 대한 정보를 추출하는 Spotify 웹 스크래핑의 예입니다.
작동 방식:
def get_spotify_playlist_data(playlist_url):
# Selenium을 통해 브라우저 실행
options = webdriver.ChromeOptions()
options.add_argument("--headless") # 헤드리스 모드에서 실행(브라우저 창 없이)
driver = webdriver.Chrome(options=options)
driver.get(playlist_url)
time.sleep(5) # 페이지가 로드될 때까지 기다립니다
# 페이지를 스크롤하여 모든 트랙을 로드합니다
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 페이지의 HTML 코드 가져오기
html = driver.page_source
driver.quit()
soup = BeautifulSoup(html, "lxml")
# 모든 트랙 찾기
tracks = []
for track in soup.find_all(class_="IjYxRc5luMiDPhKhZVUH UpiE7J6vPrJIa59qxts4"):
name = track.find(
class_="e-9541-text encore-text-body-medium encore-internal-color-text-base btE2c3IKaOXZ4VNAb8WQ standalone-ellipsis-one-line").text
artist = track.find(class_="e-9541-text encore-text-body-small").find('a').text
duration = track.find(
class_="e-9541-text encore-text-body-small encore-internal-color-text-subdued l5CmSxiQaap8rWOOpEpk").text
tracks.append({"track title": name, "artist": artist, "duration": duration})
return tracks
함수를 호출하려면 함수에 Spotify 재생 목록 URL을 전달합니다. 함수는 해당 URL을 열고 Python으로 Spotify 재생 목록 데이터를 스크랩한 다음 노래 제목, 아티스트, 재생 시간 목록을 반환합니다.
playlist_url = "https://open.spotify.com/album/7aJuG4TFXa2hmE4z1yxc3n?si=W7c1b1nNR3C7akuySGq_7g"
data = get_spotify_playlist_data(playlist_url)
for track in data:
print(track)
Spotify의 API에서 정보를 수집하려면 토큰이 필요합니다. 토큰은 인증을 통해 얻을 수 있습니다. 토큰 없이는 API에 요청할 수 없습니다. 다음 부분에서는 이를 달성하는 방법에 대해 자세히 설명합니다.
Spotify 개발자 대시보드로 이동하여 계정에 로그인하거나 아직 계정이 없는 경우 계정을 만듭니다. 로그인한 후 애플리케이션을 등록하고 이름과 설명이 포함된 양식을 작성합니다. 완료되면 클라이언트 ID와 클라이언트 비밀 번호가 생성됩니다.
토큰을 얻기 위해 Python의 요청을 사용합니다.
import requests
import base64
# 계정 데이터
CLIENT_ID = "client_id"
CLIENT_SECRET = "client_secret"
# Base64로 인코딩
credentials = f"{CLIENT_ID}:{CLIENT_SECRET}"
encoded_credentials = base64.b64encode(credentials.encode()).decode()
# 토큰 받기 요청 보내기
url = "https://accounts.spotify.com/api/token"
headers = {
"Authorization": f"Basic {encoded_credentials}",
"Content-Type": "application/x-www-form-urlencoded"
}
data = {"grant_type": "client_credentials"}
response = requests.post(url, headers=headers, data=data)
token = response.json().get("access_token")
print("Access Token:", token)
이를 통해 이전에 받은 정보를 추가하고 특정 방식으로 암호화하여 토큰을 얻기 위한 요청이 제대로 전송되도록 합니다. 이는 많은 API에 공통적으로 적용되는 보안 조치입니다. 그런 다음 토큰 가져오기 요청을 보냅니다. 토큰을 받으면 콘솔에 토큰이 인쇄됩니다.
토큰을 받으면 요청을 할 수 있습니다.
artist_id = "6qqNVTkY8uBg9cP3Jd7DAH"
url = f"https://api.spotify.com/v1/artists/{artist_id}"
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(url, headers=headers)
artist_data = response.json()
추가 분석을 위해 수집된 데이터를 JSON 형식으로 저장하기 위해 표준 Python 라이브러리를 사용합니다.
playlist_url = "https://open.spotify.com/album/7aJuG4TFXa2hmE4z1yxc3n?si=W7c1b1nNR3C7akuySGq_7g"
data = get_spotify_playlist_data(playlist_url)
with open('tracks.json', 'w', encoding='utf-8') as json_file:
json.dump(data, json_file, ensure_ascii=False, indent=4)
print("Data saved to tracks.json")
윤리적 관행을 따르면 Python을 사용한 Spotify 스크래핑 프로세스가 쉬워집니다. 이를 위해서는 규칙을 위반하지 않고 합법적으로 정보에 액세스할 수 있는 Spotify의 공식 API를 확보하세요. 웹 스크래핑을 할 때 API가 모든 요구 사항을 충족하지 못하는 경우 서버에 부담을 주지 않도록 요청 속도를 조절하는 것을 잊지 마세요.
웹사이트의 정책은 robots.txt에서 확인할 수 있으므로 웹사이트를 스크랩하기 전에 확인하세요. 또한 프록시 서버는 차단을 방지하는 데 도움이 됩니다.
이 데이터 수집 가이드에서는 Python Spotify 스크래핑 예시와 함께 적절한 스크래핑 프로세스 처리에 필요한 추가 정보를 보여드립니다.
핵심 사항을 강조해 보겠습니다:
이러한 Spotify 스크래핑 도구를 Python과 함께 사용하면 필요한 데이터를 쉽고 빠르게 수집하여 음악 콘텐츠 분석 프로세스를 최적화할 수 있습니다.
댓글: 0