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.
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?
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")
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.
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>
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
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?
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ğı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'ı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.
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.
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.
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()
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")
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.
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:
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