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.
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?
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")
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.
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>
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
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:
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
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)
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.
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.
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.
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()
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")
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.
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:
Menggunakan alat pengikis Spotify dengan Python ini memungkinkan Anda mengumpulkan data yang diperlukan dengan mudah dan cepat, mengoptimalkan proses analisis konten musik.
Komentar: 0