Data scraping można opisać jako zautomatyzowane zbieranie danych ze stron internetowych, a w przypadku Spotify oznacza to zbieranie informacji o utworach, artystach, albumach i innych przydatnych elementach do analizy lub tworzenia aplikacji muzycznych.
Użycie Pythona pomaga wyodrębnić listy odtwarzania Spotify, a także nazwę artysty i utwory. Jest to możliwe dzięki API Spotify, które pozwala uzyskać dane legalnie i bez naruszania zasad. Jeśli jednak API nie zapewnia niezbędnych narzędzi, można skorzystać z web scrapingu. BeautifulSoup i Selenium są idealne do skrobania Spotify.
W tym samouczku dotyczącym skrobania danych Spotify dowiesz się, jak zainstalować biblioteki, pracować z API Spotify, stosować skrobanie i zapisywać dane w CSV.
Wiemy już więc, jakie narzędzia są odpowiednie do skrobania danych Spotify za pomocą Pythona. Teraz przyjrzyjmy się, jak zainstalować niezbędne biblioteki:
pip install beautifulsoup4
pip install selenium
pip install requests
Jaki jest więc cel każdego z nich?
Aby umożliwić Selenium kontrolowanie przeglądarki i interakcję ze Spotify, potrzebny jest sterownik sieciowy. Jest to specjalne oprogramowanie, które może automatycznie otwierać strony, klikać przyciski itp.
Użyjemy ChromeDriver, pobierzemy go z oficjalnej strony, a następnie rozpakujemy i zapiszemy ścieżkę do niego.
from selenium import webdriver
driver_path = "C:/webdriver/chromedriver.exe" # Zastąp swoją ścieżką
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")
Podczas skrobania listy odtwarzania Spotify należy przeanalizować kod HTML strony i określić, które elementy zawierają niezbędne informacje. Zacznijmy od skrobania listy odtwarzania Spotify w Pythonie, postępując zgodnie z poniższym przewodnikiem krok po kroku.
W przeglądarce, naciskając klawisz F12, można zobaczyć strukturę HTML, w której znajdują się niezbędne elementy. Przykład takiej struktury:
<div class="tracklist-row">
<span class="track-name">name</span>
<span class="artist-name">artist</span>
<span class="track-duration">3:45</span>
</div>
Do zbierania informacji użyjemy Selenium do ładowania dynamicznej zawartości i BeautifulSoup do parsowania HTML.
from selenium import webdriver
import time
from bs4 import BeautifulSoup
Poniżej znajduje się przykład web scrapingu Spotify przy użyciu Pythona, który otwiera stronę playlisty, analizuje kod HTML i wyodrębnia informacje o utworach.
Jak to działa?
def get_spotify_playlist_data(playlist_url):
# Uruchom przeglądarkę za pomocą Selenium
options = webdriver.ChromeOptions()
options.add_argument("--headless") # Uruchamianie w trybie headless (bez okna przeglądarki)
driver = webdriver.Chrome(options=options)
driver.get(playlist_url)
time.sleep(5) # Poczekaj na załadowanie strony
# Przewiń stronę, aby załadować wszystkie utwory
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Pobierz kod HTML strony
html = driver.page_source
driver.quit()
soup = BeautifulSoup(html, "lxml")
# Znajdź wszystkie utwory
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
Aby wywołać funkcję, należy przekazać jej adres URL listy odtwarzania Spotify. Funkcja otworzy go, zeskrobuje dane listy odtwarzania Spotify za pomocą Pythona i zwraca listę tytułów utworów, wykonawców i czasów trwania.
playlist_url = "https://open.spotify.com/album/7aJuG4TFXa2hmE4z1yxc3n?si=W7c1b1nNR3C7akuySGq_7g"
data = get_spotify_playlist_data(playlist_url)
for track in data:
print(track)
Do zbierania informacji z API Spotify potrzebny jest token. Można go uzyskać poprzez uwierzytelnienie. Bez niego nie będzie można wysyłać żądań do API. W następnej części szczegółowo opiszemy, jak można to osiągnąć.
Przejdź do Spotify Developer Dashboard, zaloguj się na swoje konto lub utwórz je, jeśli jeszcze go nie masz. Po zalogowaniu zarejestruj aplikację, wypełniając formularz zawierający nazwę i opis. Po zakończeniu zostanie wygenerowany identyfikator klienta i klucz tajny klienta.
Aby uzyskać token, użyjemy żądań w Pythonie.
import requests
import base64
# Dane konta użytkownika
CLIENT_ID = "client_id"
CLIENT_SECRET = "client_secret"
# Kodowanie w Base64
credentials = f"{CLIENT_ID}:{CLIENT_SECRET}"
encoded_credentials = base64.b64encode(credentials.encode()).decode()
# Wysyłanie żądania w celu uzyskania tokena
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)
W ten sposób dołączamy otrzymane wcześniej informacje i szyfrujemy je w określony sposób, aby zapewnić prawidłowe wysłanie żądania uzyskania tokena. Jest to środek bezpieczeństwa, który jest powszechny w wielu interfejsach API. Następnie wysyłamy żądanie uzyskania tokena. Po jego uzyskaniu zostanie on wypisany do konsoli.
Po uzyskaniu tokena można wysyłać żądania.
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()
Aby zapisać zebrane dane w formacie JSON do dalszej analizy, użyjemy standardowej biblioteki 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")
Przestrzeganie etycznych praktyk ułatwi proces skrobania Spotify przy użyciu Pythona. W tym celu należy uzyskać oficjalne API Spotify, ponieważ zapewnia ono legalny dostęp do informacji bez naruszania jakichkolwiek zasad. Podczas web scrapingu należy pamiętać o ograniczeniu liczby żądań, jeśli API nie spełnia wszystkich wymagań, aby uniknąć obciążenia serwera.
Polityka witryny znajduje się w pliku robots.txt, więc sprawdź ją przed skrobaniem witryny. Ponadto serwery proxy są pomocne w zapobieganiu blokadom.
W tym przewodniku po gromadzeniu danych przedstawiono przykłady skrobania w Python Spotify, a także dodatkowe informacje potrzebne do prawidłowej obsługi procesu skrobania.
Podkreślmy kluczowe punkty:
Korzystanie z tych narzędzi do skrobania Spotify w Pythonie pozwala łatwo i szybko zebrać niezbędne dane, optymalizując proces analizy treści muzycznych.
Komentarze: 0