数据搜刮可被描述为从网站上自动收集数据,就 Spotify 而言,它意味着收集有关曲目、艺术家、专辑和其他有用元素的信息,用于分析或创建音乐应用程序。
使用 Python 可以帮助提取 Spotify 播放列表、艺术家姓名和曲目。这要归功于 Spotify API,它允许您在不违反规则的情况下合法获取数据。不过,如果 API 没有提供必要的工具,您可以使用网络刮擦。BeautifulSoup 和 Selenium 是刮擦 Spotify 的完美工具。
在本 Spotify 数据搜刮教程中,您将学习如何安装库、使用 Spotify API、应用搜刮并将数据保存为 CSV 格式。
因此,我们已经知道有哪些工具适合使用 Python 搜刮 Spotify 数据。现在,让我们看看如何安装必要的库:
pip install beautifulsoup4
pip install selenium
pip install requests
那么,每一种都有什么作用呢?
要让 Selenium 控制浏览器并与 Spotify 互动,它需要一个网络驱动程序。这是一个特殊的软件,可以自动打开网页、点击按钮等。
我们将使用 ChromeDriver,从官方网站下载,然后解压缩并保存路径。
from selenium import webdriver
driver_path = "C:/webdriver/chromedriver.exe" # 替换为您的路径
driver = webdriver.Chrome(driver_path)
driver.get("https://google.com")
刮擦 Spotify 播放列表时,您需要分析页面的 HTML 代码,并确定哪些元素包含必要的信息。让我们从 Python Spotify 播放列表搜刮开始,按照下面的指南逐步进行。
在浏览器中,按 F12 键就可以看到必要元素所在的 HTML 结构。例如
<div class="tracklist-row">
<span class="track-name">name</span>
<span class="artist-name">artist</span>
<span class="track-duration">3:45</span>
</div>
为了收集信息,我们将使用 Selenium 加载动态内容,使用 BeautifulSoup 解析 HTML。
from selenium import webdriver
import time
from bs4 import BeautifulSoup
下面是一个使用 Python 对 Spotify 进行网络搜刮的示例,它打开播放列表页面,分析 HTML 代码并提取歌曲信息。
如何使用
def get_spotify_playlist_data(playlist_url):
# 通过 Selenium 启动浏览器
options = webdriver.ChromeOptions()
options.add_argument("--headless") # 在无头模式下运行(无浏览器窗口)
driver = webdriver.Chrome(options=options)
driver.get(playlist_url)
time.sleep(5) # 等待页面加载
# 滚动页面加载所有曲目
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# 获取页面的 HTML 代码
html = driver.page_source
driver.quit()
soup = BeautifulSoup(html, "lxml")
# 查找所有轨道
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
要调用该函数,请将 Spotify 播放列表 URL 传递给它。函数会打开它,用 Python 搜刮 Spotify 播放列表数据,并返回歌曲名、艺术家和持续时间列表。
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 收集信息,您需要一个令牌。这可以通过身份验证获得。没有它,您将无法向 API 发出请求。下一部分将详细介绍如何实现这一点。
访问 Spotify Developer Dashboard,登录您的账户;如果还没有账户,请创建一个。登录后,注册应用程序,填写包含名称和描述的表格。完成后,将为您生成一个客户 ID 和客户机密。
为了获取令牌,我们将使用 Python 中的请求。
import requests
import base64
# 您的账户数据
CLIENT_ID = "client_id"
CLIENT_SECRET = "client_secret"
# Base64 编码
credentials = f"{CLIENT_ID}:{CLIENT_SECRET}"
encoded_credentials = base64.b64encode(credentials.encode()).decode()
# 发送获取令牌的请求
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)
通过这种方式,我们会追加之前收到的信息,并以某种方式对其进行加密,以确保正确发送获取令牌的请求。这是许多应用程序接口都采用的安全措施。然后,我们发送获取令牌的请求。获取后,它将被打印到控制台。
一旦拿到令牌,就可以提出申请。
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()
为了将收集到的数据保存为 JSON 格式以便进一步分析,我们将使用标准 Python 库。
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")
遵循道德规范将简化使用 Python 搜索 Spotify 的过程。为此,请获取 Spotify 的官方 API,因为它能让您合法访问信息,而不会违反任何规则。在进行网络搜刮时,如果 API 无法满足您的所有要求,请记住节流请求率,以避免服务器压力过大。
网站的政策可在 robots.txt 中找到,因此在搜索网站前应检查该政策。此外,代理服务器也有助于防止拦截。
本数据收集指南展示了 Python Spotify 搜刮示例以及正确处理搜刮过程所需的其他信息。
让我们突出重点:
使用这些带有 Python 的 Spotify 搜刮工具,您可以轻松快速地收集必要的数据,优化音乐内容分析过程。
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
评论: 0