大数据分析Python使用Last.fm API获取音乐数据 | 您所在的位置:网站首页 › img/制作api.png › 大数据分析Python使用Last.fm API获取音乐数据 |
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 实验室设备网 版权所有 |