Cách xóa dữ liệu danh sách phát Spotify bằng Python

Bình luận: 0

Cạo dữ liệu có thể được mô tả là thu thập dữ liệu tự động từ các trang web và trong trường hợp Spotify, nó có nghĩa là thu thập thông tin về các bản nhạc, nghệ sĩ, album và các yếu tố hữu ích khác để phân tích hoặc tạo các ứng dụng âm nhạc.

Việc sử dụng Python giúp trích xuất danh sách phát Spotify cũng như tên nghệ sĩ và các bản nhạc. Điều này có thể nhờ vào Spotify API, cho phép bạn lấy dữ liệu một cách hợp pháp và không vi phạm quy định. Tuy nhiên, nếu API không cung cấp các công cụ cần thiết, bạn có thể sử dụng kỹ thuật web scraping. BeautifulSoup và Selenium là những thư viện hoàn hảo để thu thập dữ liệu từ Spotify.

Trong hướng dẫn thu thập dữ liệu Spotify này, bạn sẽ học cách cài đặt các thư viện, làm việc với Spotify API, áp dụng scraping và lưu dữ liệu vào CSV.

Cài đặt các Thư viện Cần thiết

Vậy là chúng ta đã biết những công cụ nào phù hợp để thu thập dữ liệu Spotify bằng Python. Bây giờ, hãy xem cách cài đặt các thư viện cần thiết:


pip install beautifulsoup4
pip install selenium
pip install requests

Vậy, mục đích của từng thư viện là gì?

  • BeautifulSoup là một thư viện rất tiện lợi để trích xuất thông tin từ các trang web. Nó duyệt qua mã HTML của trang web từ trên xuống dưới và lấy các thành phần cần thiết. Nó cũng được sử dụng để xử lý nội dung tĩnh, ví dụ như trích xuất danh sách các bản nhạc từ một trang đang mở.
  • Mặc dù BeautifulSoup hoạt động tốt với các trang tĩnh, nhưng nó không đủ để làm việc với nội dung động. Các trang web động cần có một số tương tác người dùng và đó là vai trò của Selenium. Thư viện này cho phép bạn tự động mở trang web, nhấn nút, nhập văn bản, cuộn và tương tác với các thành phần khác nhau trên trang.
  • Thư viện Requests được sử dụng để tạo các yêu cầu HTTP. Với nó, bạn có thể dễ dàng gửi yêu cầu GET hoặc POST và xử lý API. Nếu bạn không cần nhiều tương tác với trang, như với Selenium, thì sử dụng Requests sẽ đơn giản và trực tiếp hơn.

Tải xuống Web Driver

Để cho phép Selenium điều khiển trình duyệt và tương tác với Spotify, nó cần một web driver. Đây là phần mềm đặc biệt có thể tự động mở trang, nhấn nút, v.v.

Chúng ta sẽ sử dụng ChromeDriver, tải nó từ trang chính thức, sau đó giải nén và lưu đường dẫn đến nó.


from selenium import webdriver

driver_path = "C:/webdriver/chromedriver.exe"  # Thay thế bằng đường dẫn của bạn
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")



Định nghĩa hàm để thu thập dữ liệu

Khi thu thập danh sách phát Spotify, bạn cần phân tích mã HTML của trang và xác định các phần tử chứa thông tin cần thiết. Hãy bắt đầu với việc thu thập danh sách phát Spotify bằng Python theo hướng dẫn từng bước dưới đây.

1. Phân tích Trang HTML

Trong trình duyệt, nhấn F12 để xem cấu trúc HTML nơi chứa các phần tử cần thiết. Ví dụ về cấu trúc như sau:


<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. Cài đặt Selenium

Để thu thập thông tin, chúng ta sẽ sử dụng Selenium để tải nội dung động và BeautifulSoup để phân tích cú pháp HTML.


from selenium import webdriver
import time
from bs4 import BeautifulSoup

3. Hàm thu thập dữ liệu từ danh sách phát

Dưới đây là ví dụ về web scraping Spotify bằng Python, trong đó mở trang danh sách phát, phân tích mã HTML và trích xuất thông tin về các bài hát.

Cách hoạt động:

  1. Trình duyệt mở trang danh sách phát.
  2. Selenium tự động cuộn trang để tải tất cả bài hát.
  3. BeautifulSoup phân tích cú pháp HTML và tìm các phần tử cần thiết theo class.
  4. Thông tin về tiêu đề bài hát, nghệ sĩ và thời lượng được trích xuất.

def get_spotify_playlist_data(playlist_url):
   # Khởi chạy trình duyệt thông qua Selenium
   options = webdriver.ChromeOptions()
   options.add_argument("--headless")  # Chạy ở chế độ không đầu (không có cửa sổ trình duyệt)
   driver = webdriver.Chrome(options=options)

   driver.get(playlist_url)
   time.sleep(5)  # Chờ trang tải

   # Cuộn trang để tải tất cả các bản nhạc
   driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

   # Nhận mã HTML của trang
   html = driver.page_source
   driver.quit()

   soup = BeautifulSoup(html, "lxml")

   # Tìm tất cả các bài hát
   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


Gọi chức năng

Để gọi chức năng, hãy truyền URL danh sách phát Spotify cho nó. Chức năng mở ra nó, loại bỏ dữ liệu danh sách phát Spotify với Python và trả về một danh sách các tiêu đề bài hát, nghệ sĩ và thời lượng.


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

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

Xử lý xác thực cho API Spotify

Để thu thập thông tin từ API Spotify, bạn sẽ cần một mã thông báo. Điều này có thể được nhận thông qua xác thực. Bạn sẽ không thể đưa ra yêu cầu cho API mà không có nó. Phần tiếp theo sẽ chi tiết làm thế nào điều này có thể đạt được.

1. Đăng ký ứng dụng

Truy cập bảng điều khiển nhà phát triển Spotify, đăng nhập vào tài khoản của bạn hoặc tạo một nếu bạn chưa có. Sau khi đăng nhập, đăng ký ứng dụng, điền vào biểu mẫu bao gồm tên và mô tả. Sau khi hoàn thành, ID máy khách và bí mật khách hàng sẽ được tạo cho bạn.

2. Có được mã thông báo

Để có được mã thông báo, chúng tôi sẽ sử dụng các yêu cầu trong Python.


import requests
import base64

# Dữ liệu tài khoản của bạn
CLIENT_ID = "client_id"
CLIENT_SECRET = "client_secret"

# Mã hóa trong Base64
credentials = f"{CLIENT_ID}:{CLIENT_SECRET}"
encoded_credentials = base64.b64encode(credentials.encode()).decode()

# Gửi yêu cầu để có được mã thông báo
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)

Bằng cách này, chúng tôi nối thêm thông tin nhận được trước đó và mã hóa nó theo một cách nhất định để đảm bảo rằng yêu cầu lấy mã thông báo được gửi đúng. Đây là một biện pháp bảo mật phổ biến trên nhiều API. Sau đó, chúng tôi gửi yêu cầu nhận mã thông báo. Một khi chúng ta có được nó, nó sẽ được in vào bảng điều khiển.

3. Đưa ra yêu cầu

Khi bạn có mã thông báo, bạn có thể đưa ra yêu cầu.


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

Lưu trữ dữ liệu trích xuất

Để lưu dữ liệu được thu thập ở định dạng JSON để phân tích thêm, chúng tôi sẽ sử dụng thư viện Python tiêu chuẩn.


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

Thực tiễn tốt nhất để quét dữ liệu danh sách phát Spotify

sau các thực tiễn đạo đức sẽ giảm bớt quá trình spotify cào bằng cách sử dụng python. Đối với điều này, hãy lấy API chính thức của Spotify vì nó cho phép bạn truy cập hợp pháp vào thông tin mà không vi phạm bất kỳ quy tắc nào. Khi quét web, hãy nhớ điều chỉnh tốc độ yêu cầu nếu API không phục vụ tất cả các yêu cầu của bạn để tránh biến dạng máy chủ.

Chính sách của trang web được tìm thấy trong robots.txt, vì vậy hãy kiểm tra trước khi cạo trang web. Ngoài ra, máy chủ proxy rất hữu ích trong việc ngăn chặn các khối.

Phần kết luận

Hướng dẫn này để thu thập dữ liệu đã chỉ ra các ví dụ về việc cạo Python Spotify cũng như thông tin bổ sung cần thiết để xử lý quy trình cạo thích hợp.

Hãy để nhấn mạnh các điểm chính:

  • Do BeautifulSoup phân tích trang HTML và có các tính năng thu thập thông tin mạnh mẽ, nên nó rất phù hợp với các trang tĩnh.
  • Đối với các trang động yêu cầu tương tác người dùng, Selenium vẫn là lựa chọn tốt nhất. Nó cho phép tự động nhấn nút, cuộn trang và lấy nội dung động.
  • Có những quy tắc về thu thập dữ liệu có đạo đức. Tuân thủ chúng sẽ giúp tránh bị chặn hoặc làm quá tải máy chủ. Nên ưu tiên sử dụng Spotify API thay vì phân tích HTML.

Sử dụng những công cụ thu thập dữ liệu Spotify này với Python cho phép bạn dễ dàng và nhanh chóng thu thập dữ liệu cần thiết, tối ưu hóa quy trình phân tích nội dung âm nhạc.

Bình luận:

0 Bình luận