Python Kullanarak Spotify Çalma Listesi Verileri Nasıl Kazınır

Yorumlar: 0

Veri kazıma, web sitelerinden verilerin otomatik olarak toplanması olarak tanımlanabilir ve Spotify örneğinde, analiz veya müzik uygulamaları oluşturmak için parçalar, sanatçılar, albümler ve diğer yararlı öğeler hakkında bilgi toplamak anlamına gelir.

Python kullanmak, Spotify çalma listelerinin yanı sıra sanatçının adını ve parçaları çıkarmaya yardımcı olur. Bu, verileri yasal olarak ve kuralları ihlal etmeden elde etmenizi sağlayan Spotify API sayesinde mümkündür. Ancak API gerekli araçları sağlamıyorsa web kazıma yöntemini kullanabilirsiniz. BeautifulSoup ve Selenium Spotify'ı kazımak için mükemmeldir.

Bu Spotify veri kazıma eğitiminde, kütüphaneleri nasıl kuracağınızı, Spotify API ile nasıl çalışacağınızı, kazıma işlemini nasıl uygulayacağınızı ve verileri CSV'ye nasıl kaydedeceğinizi öğreneceksiniz.

Gerekli Kütüphaneleri Kurun

Böylece, Python kullanarak Spotify verilerini kazımak için hangi araçların uygun olduğunu zaten biliyoruz. Şimdi, gerekli kütüphanelerin nasıl kurulacağına bakalım:


pip install beautifulsoup4
pip install selenium
pip install requests


Peki, her biri hangi amaca hizmet ediyor?

  • BeautifulSoup, web sayfalarından bilgi alınmasını sağlayan çok kullanışlı bir kütüphanedir. Web sayfasının HTML kodunu yukarıdan aşağıya doğru gözden geçirir ve ardından gerekli öğeleri yakalar. Statik içeriğin işlenmesinde de kullanılır, örneğin o anda açık olan bir sayfadan parçaların listesini çıkarmak gibi.
  • BeautifulSoup statik sitelerde harika çalışsa da, dinamik içerikle çalışmak için bu yeterli değildir. Dinamik web sitelerinin bir çeşit kullanıcı etkileşimine ihtiyacı vardır ve Selenium burada devreye girer. Bu kütüphane, web sayfalarını programlı olarak açmanıza, düğmelere basmanıza, metin yazmanıza, kaydırmanıza ve sitedeki çeşitli öğelerle etkileşim kurmanıza yardımcı olur.
  • Requests kütüphanesi HTTP istekleri oluşturmak için kullanılır. Bununla kolayca bir GET veya POST isteği gönderebilir ve API'leri işleyebilirsiniz. Selenium gibi site ile çok fazla etkileşime ihtiyacınız yoksa, Requests'i kullanmak daha basit ve anlaşılırdır.

Web Sürücüsünü İndirin

Selenium'un tarayıcıyı kontrol etmesini ve Spotify ile etkileşime girmesini sağlamak için bir web sürücüsüne ihtiyacı vardır. Bu, sayfaları otomatik olarak açabilen, düğmelere tıklayabilen vb. özel bir yazılımdır.

ChromeDriver'ı kullanacağız, resmi web sitesinden indireceğiz ve ardından paketini açıp yolunu kaydedeceğiz.


from selenium import webdriver

driver_path = "C:/webdriver/chromedriver.exe"  # Yolunuz ile değiştirin
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")




Verileri Kazımak için Fonksiyon Tanımlama

Spotify çalma listesini kazırken, sayfanın HTML kodunu analiz etmeniz ve hangi öğelerin gerekli bilgileri içerdiğini belirlemeniz gerekir. Aşağıdaki adım adım kılavuzu izleyerek Python Spotify çalma listesi kazımaya başlayalım.

1. HTML Sayfa Analizi

Tarayıcıda, F12 tuşuna basarak, gerekli öğelerin bulunduğu HTML yapısını görebilirsiniz. Böyle bir yapıya örnek:


<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. Selenium Kurulumu

Bilgi toplamak için dinamik içerik yüklemek üzere Selenium ve HTML ayrıştırmak için BeautifulSoup kullanacağız.


from selenium import webdriver
import time
from bs4 import BeautifulSoup


3. Bir Çalma Listesinden Veri Toplama İşlevi

Aşağıda, çalma listesi sayfasını açan, HTML kodunu analiz eden ve şarkılar hakkında bilgi çıkaran Python kullanarak Spotify'ı web kazıma örneği bulunmaktadır.

Nasıl çalışıyor?

  1. Tarayıcı çalma listesi sayfasını açar.
  2. Selenium tüm şarkıları yüklemek için sayfayı otomatik olarak kaydırır.
  3. BeautifulSoup HTML kodunu analiz eder ve gerekli öğeleri sınıflara göre bulur.
  4. Parça başlığı, sanatçı ve süre ile ilgili bilgiler çıkarılır.

def get_spotify_playlist_data(playlist_url):
   # Selenium aracılığıyla tarayıcıyı başlatın
   options = webdriver.ChromeOptions()
   options.add_argument("--headless")  # Başlıksız modda çalıştırın (tarayıcı penceresi olmadan)
   driver = webdriver.Chrome(options=options)

   driver.get(playlist_url)
   time.sleep(5)  # Sayfanın yüklenmesini bekleyin

   # Tüm parçaları yüklemek için sayfayı kaydırın
   driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

   # Sayfanın HTML kodunu alın
   html = driver.page_source
   driver.quit()

   soup = BeautifulSoup(html, "lxml")

   # Tüm parçaları bul
   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



Fonksiyonu Çağırın

Fonksiyonu çağırmak için Spotify çalma listesi URL'sini ona iletin. Fonksiyon bunu açar, Spotify çalma listesi verilerini Python ile kazır ve şarkı adlarının, sanatçıların ve sürelerin bir listesini döndürür.


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 için Kimlik Doğrulama İşlemi

Spotify'ın API'sinden bilgi toplamak için bir belirtece ihtiyacınız olacak. Bu, kimlik doğrulama yoluyla elde edilebilir. Bu olmadan API'ye istekte bulunamazsınız. Bir sonraki bölüm bunun nasıl başarılabileceğini detaylandıracaktır.

1. Uygulamayı Kaydettirin

Spotify Geliştirici Panosuna gidin, hesabınıza giriş yapın veya henüz bir hesabınız yoksa bir tane oluşturun. Giriş yaptıktan sonra, uygulamayı kaydedin, bir ad ve bir açıklama içeren formu doldurun. Tamamlandığında, sizin için bir Müşteri Kimliği ve Müşteri Sırrı oluşturulacaktır.

2. Jetonu Edinme

Token'ı elde etmek için Python'daki istekleri kullanacağız.


import requests
import base64

# Hesap verileriniz
CLIENT_ID = "client_id"
CLIENT_SECRET = "client_secret"

# Base64'te Kodlama
credentials = f"{CLIENT_ID}:{CLIENT_SECRET}"
encoded_credentials = base64.b64encode(credentials.encode()).decode()

# Belirteci almak için bir istek gönderme
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)


Bu sayede, daha önce alınan bilgileri ekliyor ve token alma talebinin düzgün bir şekilde gönderilmesini sağlamak için belirli bir şekilde şifreliyoruz. Bu, birçok API'de ortak olan bir güvenlik önlemidir. Bundan sonra, token için bir get isteği göndeririz. Elde ettiğimizde, konsola yazdırılacaktır.

3. Talepte Bulunmak

Jetonu aldıktan sonra talepte bulunabilirsiniz.


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


Çıkartılan Verileri Depolama

Toplanan verileri daha fazla analiz için JSON formatında kaydetmek için standart Python kütüphanesini kullanacağız.


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


Spotify Çalma Listesi Verilerini Kazımak için En İyi Uygulamalar

Etik uygulamaları takip etmek, Python kullanarak Spotify kazıma işlemini kolaylaştıracaktır. Bunun için Spotify'ın resmi API'sini edinin, çünkü bu size herhangi bir kuralı ihlal etmeden bilgilere yasal erişim sağlar. Web kazıma yaparken, API tüm gereksinimlerinizi karşılamıyorsa sunucu zorlanmasını önlemek için istek hızını azaltmayı unutmayın.

Web sitesinin politikası robots.txt dosyasında bulunur, bu nedenle web sitesini kazımadan önce bunu kontrol edin. Ayrıca, proxy sunucuları engellemeleri önlemede yardımcı olur.

Sonuç

Bu veri toplama kılavuzunda Python Spotify kazıma örneklerinin yanı sıra doğru kazıma işleminin gerçekleştirilmesi için gereken ek bilgiler de gösterilmiştir.

Kilit noktaları vurgulayalım:

  • BeautifulSoup HTML sayfasını analiz ettiğinden ve güçlü bilgi toplama özellikleri içerdiğinden, statik siteler için mükemmel şekilde uygundur.
  • Kullanıcı etkileşimi gerektiren dinamik siteler söz konusu olduğunda, Selenium açık ara en iyi seçenektir. Düğmelere otomatik olarak basılmasını, sayfaların kaydırılmasını ve dinamik içeriğin alınmasını sağlar.
  • Etik kazıma için kurallar vardır. Bunlara uymak, birinin engellenmesini veya sunucuya aşırı yüklenmesini önleyecektir. HTML'yi ayrıştırmak yerine Spotify API'sini kullanmak tercih edilir.

Bu Spotify kazıma araçlarını Python ile kullanmak, gerekli verileri kolayca ve hızlı bir şekilde toplamanıza olanak tanıyarak müzik içeriğini analiz etme sürecini optimize eder.

Yorumlar:

0 yorumlar