大数据分析Python使用Last.fm API获取音乐数据 您所在的位置:网站首页 img/制作api.png 大数据分析Python使用Last.fm API获取音乐数据

大数据分析Python使用Last.fm API获取音乐数据

2022-12-27 19:11| 来源: 网络整理| 查看: 265

API使我们能够从服务器发出检索数据的请求。API在许多方面都很有用,但其中之一是能够为数据科学项目创建唯一的数据集。在本教程中,我们将学习一些用于Last.fm API的高级技术。

在我们的初学者大数据分析Python API教程中,我们使用了一个简单的API,非常适合教授基础知识:

a.它具有一些易于理解的终点。

b.因为它不需要身份验证,所以我们不必担心如何告诉API我们有权使用它。

c.每个端点响应的数据都很小,并且结构易于理解。

实际上,大多数API都比这更复杂,因此要使用它们,您需要了解一些更高级的概念。具体来说,我们将学习:

a.如何使用API密钥进行身份验证。

b.如何使用速率限制和其他技术在API准则内工作。

c.如何使用分页处理较大的响应。

本教程假定您了解使用大数据分析Python使用API的基础知识。如果您不这样做,我们建议您开始我们的初学者API教程。我们还假设您具有大数据分析Python和pandas的中级知识。如果您不这样做,则可以通过我们的大数据分析Python基础课程免费开始学习。

使用Last.fm API

我们将使用Last.fm API。Last.fm是一项音乐服务,可通过连接到iTunes,Spotify等类似的音乐流应用程序并跟踪您听的音乐来建立个人资料。

他们提供对API的免费访问权,以便音乐服务可以向其发送数据,还可以提供终结点,以汇总Last.fm在各种艺术家,歌曲和流派上拥有的所有数据。我们将使用他们的API建立热门艺术家的数据集。

遵循API准则

使用API时,请务必遵循其准则。如果你不这样做,则可能会被禁止使用该API。除此之外,特别是当一家公司免费提供API时,请尊重他们的限制和准则,因为他们没有提供任何东西。

查看API文档中的Introduction页面,我们会注意到一些重要的准则:

请在所有请求上使用可识别的User-Agent标头。这有助于我们进行日志记录,并减少被禁止的风险。

向last.fm API发出请求时,可以使用headers标识自己。Last.fm希望我们在标头中指定一个用户代理,以便他们知道我们是谁。我们将在稍后提出第一个请求时学习如何执行此操作。

在确定要拨打多少次电话时,请使用常识。例如,如果要制作Web应用程序,请尝试不要在页面加载时点击API。如果您的应用程序每秒持续拨打多个电话,则您的帐户可能会被暂停。

为了构建我们的数据集,我们将需要向Last.fm API发出数千个请求。尽管他们没有在文档中提供具体的限制,但他们确实建议我们不要持续每秒进行多次呼叫。在本教程中,我们将学习一些限制速率的策略,或者确保我们不会过多使用它们的API,以便避免被禁止。

在发出第一个请求之前,我们需要学习如何使用Last.fm API进行身份验证

使用API密钥进行身份验证

大多数API都要求您进行身份验证,以便他们知道您有权使用它们。身份验证的最常见形式之一是使用API密钥,就像使用其API的密码一样。如果在发出请求时未提供API密钥,则会出现错误。

使用API密钥的过程如下:

a.您使用API的提供者创建一个帐户。

b.您需要一个API密钥,该密钥通常是一个长字符串,例如

54686973206973206d7920415049204b6579。

c.您可以将API密钥记录在安全的地方,例如密码保存器。如果有人获得了您的API密钥,那么他们可以使用伪装成您的API。

d.每次发出请求时,您都提供API密钥以进行身份验证。

要获取Last.fm的API密钥,请先创建一个帐户。创建帐户后,应转到以下表格:

在每个字段中填写有关您计划如何使用API的信息。您可以将“回调URL”字段保留为空白,因为仅当您正在构建要验证为特定Last.fm用户的Web应用程序时才使用此字段。

提交表单后,您将获得API密钥和共享密钥的详细信息:

请在安全的地方记下这些内容-本教程无需使用共享密钥,但最好记下它,以防万一您想做一些需要您作为特定用户进行身份验证的事情。

发出我们的第一个API请求

为了创建热门艺术家的数据集,我们将使用chart.getTopArtists端点。

查看Last.fm API文档,我们可以观察到以下几点:

a.看起来只有一个真实的端点,并且实际上每个“端点”都是使用method参数指定的。

b.文档说此服务不需要身份验证。尽管起初看起来似乎有些混乱,但它告诉我们的是,我们不需要身份验证为特定的Last.fm用户。如果您在此之上看,您会发现我们确实需要提供我们的API密钥。

c.API可以返回多种格式的结果-我们将指定JSON,以便我们可以利用我们在大数据分析Python中使用API的已知知识

在开始之前,请记住,当我们发出请求时,我们需要提供一个用户代理标头来标识自己。使用大数据分析Python请求库,我们使用headers参数和标头字典来指定标头,如下所示:

我们将从定义API密钥和用户代理开始(本教程中显示的API密钥不是真正的API密钥!)

接下来,我们将导入请求库,为标头和参数创建字典,然后发出第一个请求!

我们的请求返回的状态码为“ 200”,因此我们知道成功了。

在查看请求返回的数据之前,请考虑一下在本教程中我们将发出许多请求的事实。在这些请求中,许多功能将是相同的:

a.我们将使用相同的URL

b.我们将使用相同的API密钥

c.我们将指定JSON作为我们的格式。

d.我们将使用相同的标题。

为了节省时间,我们将创建一个函数来为我们完成很多工作。我们将为该函数提供一个有效负载字典,然后将额外的键添加到该字典,并将其与其他选项一起传递以发出请求。

让我们看一下该函数的外观:

正如我们在初学者大数据分析Python API教程中所了解的那样,大多数API都以JSON格式返回数据,并且我们可以使用大数据分析Python json模块以更易于理解的格式打印JSON数据。

让我们重新使用jprint()在该教程中创建的函数,并打印来自API的响应:

{

"artists": {

"@attr": {

"page": "1",

"perPage": "50",

"total": "2901036",

"totalPages": "58021"

},

"artist": [

{

"image": [

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "small"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "medium"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "large"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "extralarge"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "mega"

}

],

"listeners": "1957174",

"mbid": "

b7539c32-53e7-4908-bda3-81449c367da6",

"name": "Lana Del Rey",

"playcount": "232808939",

"streamable": "0",

"url": "

https://www.last.fm/music/Lana+Del+Rey"

},

{

"image": [

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "small"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "medium"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "large"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "extralarge"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "mega"

}

],

"listeners": "588883",

"mbid": "",

"name": "Billie Eilish",

"playcount": "35520548",

"streamable": "0",

"url": "

https://www.last.fm/music/Billie+Eilish"

},

{

"image": [

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "small"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "medium"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "large"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "extralarge"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "mega"

}

],

"listeners": "655052",

"mbid": "",

"name": "Post Malone",

"playcount": "34942708",

"streamable": "0",

"url": "

https://www.last.fm/music/Post+Malone"

},

{

"image": [

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "small"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "medium"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "large"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "extralarge"

},

{

"#text": "

https://lastfm-img2.akamaized.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",

"size": "mega"

}

],

由于文字过多,没有写全,大家可以参考:

大数据分析Python使用Last.fm API获取音乐数据

https://www.aaa-cg.com.cn/data/2307.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有