Wie man Spotify-Wiedergabelisten-Daten mit Python abgreift

Bemerkungen: 0

Data Scraping kann als automatisiertes Sammeln von Daten von Websites beschrieben werden, und im Fall von Spotify bedeutet es das Sammeln von Informationen über Titel, Künstler, Alben und andere nützliche Elemente für Analysen oder die Erstellung von Musikanwendungen.

Die Verwendung von Python hilft dabei, Spotify-Wiedergabelisten sowie die Namen der Künstler und Titel zu extrahieren. Dies ist dank der Spotify-API möglich, mit der Sie Daten legal und ohne Verletzung von Regeln erhalten können. Wenn die API jedoch nicht die erforderlichen Tools bereitstellt, können Sie Web Scraping verwenden. BeautifulSoup und Selenium sind perfekt für das Scraping von Spotify geeignet.

In diesem Spotify-Daten-Scraping-Tutorial erfahren Sie, wie Sie Bibliotheken installieren, mit der Spotify-API arbeiten, Scraping anwenden und Daten im CSV-Format speichern.

Installieren Sie die erforderlichen Bibliotheken

Wir wissen also bereits, welche Tools für das Scrapen von Spotify-Daten mit Python geeignet sind. Schauen wir uns nun an, wie man die notwendigen Bibliotheken installiert:


pip install beautifulsoup4
pip install selenium
pip install requests

Welchem Zweck dient also jedes einzelne von ihnen?

  • BeautifulSoup ist eine sehr praktische Bibliothek, die das Abrufen von Informationen aus Webseiten ermöglicht. Sie geht den HTML-Code der Webseite von oben nach unten durch und schnappt sich dann die notwendigen Elemente. Sie wird auch für die Verarbeitung statischer Inhalte verwendet, z. B. zum Extrahieren der Liste der Titel aus einer gerade geöffneten Seite.
  • BeautifulSoup eignet sich zwar hervorragend für statische Websites, reicht aber nicht aus, um mit dynamischen Inhalten zu arbeiten. Dynamische Websites benötigen eine Form der Benutzerinteraktion, und genau hier kommt Selenium ins Spiel. Mit dieser Bibliothek können Sie programmgesteuert Webseiten öffnen, Schaltflächen drücken, Text eingeben, scrollen und mit verschiedenen Elementen auf der Website interagieren.
  • Die Requests-Bibliothek wird zum Erstellen von HTTP-Anfragen verwendet. Mit ihr können Sie ganz einfach eine GET- oder POST-Anfrage senden und APIs verarbeiten. Wenn Sie nicht viel mit der Website zu tun haben wollen, z. B. über Selenium, ist die Verwendung von Requests einfacher und unkomplizierter.

Download des Web-Treibers

Um Selenium in die Lage zu versetzen, den Browser zu steuern und mit Spotify zu interagieren, benötigt es einen Webtreiber. Dies ist eine spezielle Software, die automatisch Seiten öffnen, Schaltflächen anklicken usw. kann.

Wir verwenden ChromeDriver, laden es von der offiziellen Website herunter, entpacken es und speichern den Pfad dazu.


from selenium import webdriver

driver_path = "C:/webdriver/chromedriver.exe"  # Ersetzen Sie durch Ihren Pfad
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")



Funktion zum Scrapen der Daten definieren

Beim Scraping von Spotify-Wiedergabelisten müssen Sie den HTML-Code der Seite analysieren und feststellen, welche Elemente die erforderlichen Informationen enthalten. Beginnen wir mit dem Scraping der Spotify-Wiedergabeliste in Python und folgen dabei der unten stehenden Schritt-für-Schritt-Anleitung.

1. HTML-Seiten-Analyse

Im Browser können Sie durch Drücken von F12 die HTML-Struktur sehen, in der sich die erforderlichen Elemente befinden. Beispiel für eine solche Struktur:


<div class="tracklist-row">
    <span class="track-name">name</span>
    <span class="artist-name">artist</span>
    <span class="track-duration">3:45</span>
</div>

2. Einrichten von Selenium

Um Informationen zu sammeln, werden wir Selenium zum Laden dynamischer Inhalte und BeautifulSoup zum Parsen von HTML verwenden.


from selenium import webdriver
import time
from bs4 import BeautifulSoup

3. Funktion zum Sammeln von Daten aus einer Wiedergabeliste

Unten sehen Sie ein Beispiel für Web-Scraping von Spotify mit Python, das die Wiedergabelistenseite öffnet, den HTML-Code analysiert und Informationen über die Lieder extrahiert.

Wie es funktioniert:

  1. Der Browser öffnet die Seite mit der Wiedergabeliste.
  2. Selenium scrollt automatisch die Seite, um alle Lieder zu laden.
  3. BeautifulSoup analysiert den HTML-Code und findet die notwendigen Elemente nach Klassen.
  4. Informationen über den Titel, den Interpreten und die Dauer des Titels werden extrahiert.

def get_spotify_playlist_data(playlist_url):
   # Starten Sie den Browser über Selenium
   options = webdriver.ChromeOptions()
   options.add_argument("--headless")  # Ausführen im Headless-Modus (ohne Browserfenster)
   driver = webdriver.Chrome(options=options)

   driver.get(playlist_url)
   time.sleep(5)  # Warten, bis die Seite geladen ist

   # Scrollen Sie die Seite, um alle Titel zu laden
   driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

   # Abrufen des HTML-Codes der Seite
   html = driver.page_source
   driver.quit()

   soup = BeautifulSoup(html, "lxml")

   # Alle Titel finden
   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


Aufruf der Funktion

Um die Funktion aufzurufen, übergeben Sie ihr die URL der Spotify-Wiedergabeliste. Die Funktion öffnet sie, durchsucht die Spotify-Wiedergabelistendaten mit Python und gibt eine Liste mit Songtiteln, Interpreten und Laufzeiten zurück.


playlist_url = "https://open.spotify.com/album/7aJuG4TFXa2hmE4z1yxc3n?si=W7c1b1nNR3C7akuySGq_7g" 

data = get_spotify_playlist_data(playlist_url)
for track in data:
   print(track)

Handhabung der Authentifizierung für Spotify API

Um Informationen von der Spotify-API zu erhalten, benötigen Sie ein Token. Dieses erhalten Sie durch Authentifizierung. Ohne dieses Token können Sie keine Anfragen an die API stellen. Im nächsten Teil wird beschrieben, wie dies erreicht werden kann.

1. Registrieren Sie die Anwendung

Gehen Sie zum Spotify Developer Dashboard, melden Sie sich bei Ihrem Konto an oder erstellen Sie eines, wenn Sie noch keines haben. Nachdem Sie sich angemeldet haben, registrieren Sie die Anwendung und füllen Sie das Formular aus, das einen Namen und eine Beschreibung enthält. Nach dem Ausfüllen werden eine Client-ID und ein Client-Geheimnis für Sie generiert.

2. Beschaffung des Tokens

Um das Token zu erhalten, werden wir Anfragen in Python verwenden.


import requests
import base64

# Ihre Kontodaten
CLIENT_ID = "client_id"
CLIENT_SECRET = "client_secret"

# Encoding in Base64
credentials = f"{CLIENT_ID}:{CLIENT_SECRET}"
encoded_credentials = base64.b64encode(credentials.encode()).decode()

# Senden einer Anfrage zum Erhalt des Tokens
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)

Auf diese Weise fügen wir die zuvor erhaltenen Informationen hinzu und verschlüsseln sie auf eine bestimmte Weise, um sicherzustellen, dass die Anfrage zur Erlangung des Tokens ordnungsgemäß gesendet wird. Dies ist eine Sicherheitsmaßnahme, die bei vielen APIs üblich ist. Danach senden wir eine Anfrage zum Abrufen des Tokens. Sobald wir es erhalten, wird es auf der Konsole ausgegeben.

3. Make Requests

Sobald Sie den Token haben, können Sie Anfragen stellen.


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()

Extrahierte Daten speichern

Um die gesammelten Daten im JSON-Format für die weitere Analyse zu speichern, werden wir die Standard-Python-Bibliothek verwenden.


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")

Best Practices für das Scraping von Spotify-Wiedergabelistendaten

Die Befolgung ethischer Praktiken wird den Prozess des Spotify-Scrapings mit Python erleichtern. Besorgen Sie sich dazu die offizielle API von Spotify, denn sie ermöglicht Ihnen einen legalen Zugang zu Informationen, ohne gegen irgendwelche Regeln zu verstoßen. Denken Sie beim Web Scraping daran, die Rate der Anfragen zu drosseln, wenn die API nicht alle Ihre Anforderungen erfüllt, um eine Überlastung des Servers zu vermeiden.

Die Richtlinien der Website finden sich in der robots.txt, die Sie vor dem Scrapen der Website überprüfen sollten. Auch Proxy-Server sind hilfreich, um Sperren zu verhindern.

Schlussfolgerung

Dieser Leitfaden zur Datenerfassung enthält Beispiele für das Spotify-Scraping mit Python sowie zusätzliche Informationen, die für eine ordnungsgemäße Abwicklung des Scraping-Prozesses erforderlich sind.

Lassen Sie uns die wichtigsten Punkte hervorheben:

  • Da BeautifulSoup die HTML-Seite analysiert und leistungsstarke Funktionen zur Informationssammlung enthält, ist es perfekt für statische Websites geeignet.
  • Wenn es um dynamische Sites geht, die Benutzerinteraktion erfordern, ist Selenium bei weitem die beste Option. Es ermöglicht das automatische Drücken von Schaltflächen, das Scrollen von Seiten und das Abrufen von dynamischen Inhalten.
  • Es gibt Regeln für ethisches Scraping. Wer sie befolgt, verhindert, dass jemand blockiert wird oder den Server überlastet. Es ist vorzuziehen, die Spotify-API zu verwenden, anstatt HTML zu analysieren.

Die Verwendung dieser Spotify-Scraping-Tools mit Python ermöglicht es Ihnen, einfach und schnell die erforderlichen Daten zu sammeln und den Prozess der Analyse von Musikinhalten zu optimieren.

Bemerkungen:

0 Bemerkungen