Cara Mengikis Data Daftar Putar Spotify Menggunakan Python

Komentar: 0

Pengikisan data dapat digambarkan sebagai pengumpulan data secara otomatis dari situs web, dan dalam kasus Spotify, ini berarti mengumpulkan informasi tentang trek, artis, album, dan elemen berguna lainnya untuk analisis atau membuat aplikasi musik.

Menggunakan Python membantu mengekstrak daftar putar Spotify serta nama artis dan lagu. Hal ini dimungkinkan berkat API Spotify, yang memungkinkan Anda memperoleh data secara legal dan tanpa melanggar aturan. Namun, jika API tidak menyediakan alat yang diperlukan, Anda dapat menggunakan pengikisan web. BeautifulSoup dan Selenium sangat cocok untuk mengikis Spotify.

Dalam tutorial scraping data Spotify ini, Anda akan belajar cara menginstal library, bekerja dengan API Spotify, menerapkan scraping, dan menyimpan data dalam bentuk CSV.

Instal Perpustakaan yang Diperlukan

Jadi, kita sudah tahu alat apa yang cocok untuk mengikis data Spotify menggunakan Python. Sekarang, mari kita lihat cara menginstal library yang diperlukan:


pip install beautifulsoup4
pip install selenium
pip install requests


Jadi, apa tujuan dari masing-masingnya?

  • BeautifulSoup adalah pustaka yang sangat berguna yang memungkinkan pengambilan informasi dari halaman web. Ia menelusuri kode HTML dari halaman web dari atas ke bawah dan kemudian mengambil elemen-elemen yang diperlukan. Ini juga digunakan dalam memproses konten statis, misalnya mengekstrak daftar lagu dari halaman yang sedang terbuka.
  • Meskipun BeautifulSoup bekerja sangat baik dengan situs statis, ini tidak cukup untuk bekerja dengan konten dinamis. Situs web dinamis membutuhkan beberapa bentuk keterlibatan pengguna dan di situlah Selenium masuk. Pustaka ini membantu Anda untuk membuka halaman web secara terprogram, menekan tombol, mengetik teks, menggulir, dan terlibat dengan berbagai elemen di situs.
  • Pustaka Requests digunakan untuk membuat permintaan HTTP. Dengannya, Anda dapat dengan mudah mengirim permintaan GET atau POST dan menangani API. Jika Anda tidak memerlukan banyak interaksi dengan situs, seperti melalui Selenium, maka menggunakan Requests lebih sederhana dan mudah.

Unduh Driver Web

Agar Selenium dapat mengontrol peramban dan berinteraksi dengan Spotify, dibutuhkan driver web. Ini adalah perangkat lunak khusus yang dapat secara otomatis membuka halaman, mengklik tombol, dll.

Kita akan menggunakan ChromeDriver, mengunduhnya dari situs web resmi, lalu membukanya dan menyimpan jalurnya.


from selenium import webdriver

driver_path = "C:/webdriver/chromedriver.exe"  # Ganti dengan jalur Anda
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")




Tentukan Fungsi untuk Mengikis Data

Saat mengikis daftar putar Spotify, Anda perlu menganalisis kode HTML halaman dan menentukan elemen mana yang berisi informasi yang diperlukan. Mari kita mulai dengan pengikisan daftar putar Spotify dengan Python mengikuti panduan langkah demi langkah di bawah ini.

1. Analisis Halaman HTML

Di browser, dengan menekan F12, Anda dapat melihat struktur HTML di mana elemen-elemen yang diperlukan berada. Contoh struktur seperti itu:


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

Untuk mengumpulkan informasi, kami akan menggunakan Selenium untuk memuat konten dinamis dan BeautifulSoup untuk mengurai HTML.


from selenium import webdriver
import time
from bs4 import BeautifulSoup


3. Fungsi untuk Mengumpulkan Data dari Daftar Putar

Di bawah ini adalah contoh web scraping Spotify menggunakan Python, yang membuka halaman daftar putar, menganalisis kode HTML, dan mengekstrak informasi tentang lagu.

Bagaimana cara kerjanya:

  1. Browser membuka halaman daftar putar.
  2. Selenium secara otomatis menggulir halaman untuk memuat semua lagu.
  3. BeautifulSoup menganalisis kode HTML dan menemukan elemen-elemen yang diperlukan berdasarkan kelas.
  4. Informasi tentang judul lagu, artis, dan durasi diekstrak.


def get_spotify_playlist_data(playlist_url):
   # Luncurkan browser melalui Selenium
   options = webdriver.ChromeOptions()
   options.add_argument("--headless")  # Jalankan dalam mode tanpa kepala (tanpa jendela browser)
   driver = webdriver.Chrome(options=options)

   driver.get(playlist_url)
   time.sleep(5)  # Tunggu hingga halaman dimuat

   # Gulir halaman untuk memuat semua trek
   driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

   # Dapatkan kode HTML dari halaman tersebut
   html = driver.page_source
   driver.quit()

   soup = BeautifulSoup(html, "lxml")

   # Temukan semua trek
   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


Panggil Fungsi

Untuk memanggil fungsi ini, berikan URL daftar putar Spotify ke fungsi tersebut. Fungsi ini akan membukanya, mengikis data daftar putar Spotify dengan Python, dan mengembalikan daftar judul lagu, artis, dan durasi.


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

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


Menangani Autentikasi untuk API Spotify

Untuk mengumpulkan informasi dari API Spotify, Anda memerlukan token. Ini bisa didapatkan melalui autentikasi. Anda tidak akan dapat membuat permintaan ke API tanpa token tersebut. Bagian selanjutnya akan menjelaskan bagaimana hal ini dapat dilakukan.

1. Mendaftarkan Aplikasi

Buka Dasbor Pengembang Spotify, masuk ke akun Anda atau buat akun jika Anda belum memilikinya. Setelah masuk, daftarkan aplikasi, isi formulir yang menyertakan nama dan deskripsi. Setelah selesai, ID Klien dan Rahasia Klien akan dibuat untuk Anda.

2. Dapatkan Token

Untuk mendapatkan token, kita akan menggunakan permintaan di Python.


import requests
import base64

# Data akun Anda
CLIENT_ID = "client_id"
CLIENT_SECRET = "client_secret"

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

# Mengirim permintaan untuk mendapatkan token
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)


Dengan cara ini, kami menambahkan informasi yang diterima sebelumnya dan mengenkripsinya dengan cara tertentu untuk memastikan bahwa permintaan untuk mendapatkan token terkirim dengan benar. Ini adalah langkah keamanan yang umum dilakukan di banyak API. Setelah itu, kami mengirim permintaan untuk mendapatkan token. Setelah kami mendapatkannya, token akan dicetak ke konsol.

3. Membuat Permintaan

Setelah Anda memiliki token, Anda dapat membuat permintaan.


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


Menyimpan Data yang Diekstrak

Untuk menyimpan data yang dikumpulkan dalam format JSON untuk analisis lebih lanjut, kita akan menggunakan pustaka Python standar.


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


Praktik Terbaik untuk Mengikis Data Daftar Putar Spotify

Mengikuti praktik-praktik etis akan memudahkan proses pengikisan Spotify menggunakan Python. Untuk itu, dapatkan API resmi dari Spotify karena API ini memberi Anda akses legal ke informasi tanpa melanggar aturan apa pun. Ketika melakukan web scraping, ingatlah untuk membatasi kecepatan permintaan jika API tidak melayani semua kebutuhan Anda untuk menghindari beban server.

Kebijakan situs web dapat ditemukan di robots.txt, jadi periksalah sebelum meng-crack situs web. Selain itu, server proxy juga sangat membantu dalam mencegah pemblokiran.

Kesimpulan

Panduan pengumpulan data ini telah menunjukkan contoh scraping Python Spotify serta informasi tambahan yang diperlukan untuk penanganan proses scraping yang tepat.

Mari kita soroti poin-poin penting:

  • Karena BeautifulSoup menganalisis halaman HTML dan terdiri dari fitur pengumpulan informasi yang kuat, ini sangat cocok untuk situs statis.
  • Untuk situs dinamis yang membutuhkan interaksi pengguna, Selenium sejauh ini merupakan pilihan terbaik. Ini memungkinkan penekanan tombol secara otomatis, pengguliran halaman, dan pengambilan konten dinamis.
  • Ada aturan untuk melakukan scraping secara etis. Mengikuti aturan-aturan tersebut akan mencegah seseorang diblokir atau membebani server. Lebih baik menggunakan API Spotify daripada mem-parsing HTML.

Menggunakan alat pengikis Spotify dengan Python ini memungkinkan Anda mengumpulkan data yang diperlukan dengan mudah dan cepat, mengoptimalkan proses analisis konten musik.

Komentar:

0 komentar