Comment récupérer les données des listes de lecture de Spotify en utilisant Python

Commentaires: 0

Dans le cas de Spotify, il s'agit de collecter des informations sur les titres, les artistes, les albums et d'autres éléments utiles pour l'analyse ou la création d'applications musicales.

L'utilisation de Python permet d'extraire les listes de lecture Spotify ainsi que le nom de l'artiste et les titres. Ceci est possible grâce à l'API Spotify, qui vous permet d'obtenir des données légalement et sans violer les règles. Cependant, si l'API ne fournit pas les outils nécessaires, vous pouvez utiliser le web scraping. BeautifulSoup et Selenium sont parfaits pour le scraping de Spotify.

Dans ce tutoriel sur le scraping de données Spotify, vous apprendrez à installer les bibliothèques, à travailler avec l'API Spotify, à appliquer le scraping et à enregistrer les données au format CSV.

Installer les bibliothèques requises

Nous savons donc déjà quels sont les outils qui permettent de récupérer les données de Spotify à l'aide de Python. Maintenant, voyons comment installer les bibliothèques nécessaires:


pip install beautifulsoup4
pip install selenium
pip install requests


Quel est donc l'objectif de chacun d'entre eux?

  • BeautifulSoup est une bibliothèque très pratique qui permet de récupérer des informations à partir de pages web. Elle parcourt le code HTML de la page web de haut en bas et extrait les éléments nécessaires. Elle est également utilisée pour traiter le contenu statique, par exemple pour extraire la liste des pistes d'une page actuellement ouverte.
  • Si BeautifulSoup fonctionne très bien avec les sites statiques, ce n'est pas suffisant pour travailler avec du contenu dynamique. Les sites web dynamiques ont besoin d'une certaine forme d'engagement de l'utilisateur et c'est là que Selenium intervient. Cette bibliothèque vous aide à ouvrir des pages web de manière programmatique, à appuyer sur des boutons, à taper du texte, à faire défiler la page et à interagir avec divers éléments du site.
  • La bibliothèque Requests est utilisée pour créer des requêtes HTTP. Grâce à elle, vous pouvez facilement envoyer une requête GET ou POST et gérer les API. Si vous n'avez pas besoin de beaucoup d'engagement avec le site, comme avec Selenium, l'utilisation de Requests est plus simple et plus directe.

Télécharger le pilote Web

Pour permettre à Selenium de contrôler le navigateur et d'interagir avec Spotify, il a besoin d'un pilote web. Il s'agit d'un logiciel spécial qui peut automatiquement ouvrir des pages, cliquer sur des boutons, etc.

Nous allons utiliser ChromeDriver, le télécharger depuis le site officiel, le décompresser et enregistrer le chemin d'accès.


from selenium import webdriver

driver_path = "C:/webdriver/chromedriver.exe"  # Remplacer par votre chemin
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")




Définir une fonction pour extraire les données

Lorsque vous scrapez une liste de lecture Spotify, vous devez analyser le code HTML de la page et déterminer quels éléments contiennent les informations nécessaires. Commençons par le scraping Python de listes de lecture Spotify en suivant le guide étape par étape ci-dessous.

1. analyse des pages HTML

Dans le navigateur, en appuyant sur F12, vous pouvez voir la structure HTML où se trouvent les éléments nécessaires. Exemple d'une telle structure:


<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. Configuration de Selenium

Pour collecter les informations, nous utiliserons Selenium pour charger le contenu dynamique et BeautifulSoup pour analyser le code HTML.


from selenium import webdriver
import time
from bs4 import BeautifulSoup


3. Fonction de collecte de données à partir d'une liste de lecture

Voici un exemple de web scraping Spotify utilisant Python, qui ouvre la page de la liste de lecture, analyse le code HTML et extrait des informations sur les chansons.

Comment cela fonctionne-t-il?

  1. Le navigateur ouvre la page de la liste de lecture.
  2. Selenium fait automatiquement défiler la page pour charger toutes les chansons.
  3. BeautifulSoup analyse le code HTML et trouve les éléments nécessaires par classes.
  4. Des informations sur le titre de la piste, l'artiste et la durée sont extraites.

def get_spotify_playlist_data(playlist_url):
   # Lancer le navigateur via Selenium
   options = webdriver.ChromeOptions()
   options.add_argument("--headless")  # Exécution en mode "headless" (sans fenêtre de navigation)
   driver = webdriver.Chrome(options=options)

   driver.get(playlist_url)
   time.sleep(5)  # Attendre le chargement de la page

   # Faire défiler la page pour charger toutes les pistes
   driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

   # Obtenir le code HTML de la page
   html = driver.page_source
   driver.quit()

   soup = BeautifulSoup(html, "lxml")

   # Trouver toutes les pistes
   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



Appeler la fonction

Pour appeler la fonction, il faut lui passer l'URL de la liste de lecture Spotify. La fonction l'ouvre, scrape les données de la liste de lecture Spotify avec Python, et renvoie une liste de titres de chansons, d'artistes et de durées.


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

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


Gestion de l'authentification pour l'API Spotify

Pour recueillir des informations à partir de l'API de Spotify, vous aurez besoin d'un jeton. Vous pouvez l'obtenir par le biais de l'authentification. Vous ne pourrez pas faire de demandes à l'API sans ce jeton. La partie suivante détaille comment cela peut être réalisé.

1. Enregistrer l'application

Allez sur le tableau de bord du développeur Spotify, connectez-vous à votre compte ou créez-en un si vous n'en avez pas encore. Après vous être connecté, enregistrez l'application, remplissez le formulaire qui comprend un nom et une description. Une fois le formulaire rempli, un identifiant et un secret client seront générés pour vous.

2. Obtenir le jeton

Pour obtenir le jeton, nous utiliserons des requêtes en Python.


import requests
import base64

# Vos données de compte
CLIENT_ID = "client_id"
CLIENT_SECRET = "client_secret"

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

# Envoi d'une demande pour obtenir le jeton
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)


Ainsi, nous ajoutons les informations reçues précédemment et les chiffrons d'une certaine manière afin de garantir que la demande d'obtention du jeton est envoyée correctement. Il s'agit d'une mesure de sécurité commune à de nombreuses API. Ensuite, nous envoyons une demande d'obtention du jeton. Une fois obtenu, il sera imprimé sur la console.

3. Formuler des demandes

Une fois que vous avez le jeton, vous pouvez faire des demandes.


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


Stocker les données extraites

Pour enregistrer les données collectées au format JSON en vue d'une analyse ultérieure, nous utiliserons la bibliothèque standard 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")


Meilleures pratiques pour récupérer les données des listes de lecture de Spotify

Le respect de pratiques éthiques facilitera le processus de scraping de Spotify à l'aide de Python. Pour cela, obtenez l'API officielle de Spotify car elle vous donne un accès légal à l'information sans violer aucune règle. Lorsque vous faites du web scraping, n'oubliez pas de limiter le nombre de requêtes si l'API ne répond pas à toutes vos exigences afin d'éviter de surcharger le serveur.

La politique du site web se trouve dans le fichier robots.txt, il faut donc le vérifier avant de scraper le site web. En outre, les serveurs proxy permettent d'éviter les blocages.

Conclusion

Ce guide de la collecte de données a montré des exemples de scraping de Python Spotify ainsi que des informations supplémentaires nécessaires au bon déroulement du processus de scraping.

Soulignons les points essentiels:

  • Comme BeautifulSoup analyse la page HTML et comprend de puissantes fonctions de collecte d'informations, il est parfaitement adapté aux sites statiques.
  • Lorsqu'il s'agit de sites dynamiques nécessitant une interaction avec l'utilisateur, Selenium est de loin la meilleure option. Il permet d'appuyer automatiquement sur des boutons, de faire défiler des pages et de récupérer du contenu dynamique.
  • Il existe des règles d'éthique en matière de scraping. Les respecter évitera à quelqu'un d'être bloqué ou de surcharger le serveur. Il est préférable d'utiliser l'API Spotify plutôt que d'analyser du HTML.

L'utilisation de ces outils de scraping Spotify avec Python vous permet de collecter facilement et rapidement les données nécessaires, optimisant ainsi le processus d'analyse du contenu musical.

Commentaires:

0 Commentaires