Python API的使用简述

文章目录

    • Web API
      • Git 和 GitHub
      • 使用 API 调用请求数据
      • 安装 requests
      • 处理响应 API
      • 处理响应字典
      • 监视API的速率限制
      • 使用 Pygal 可视化仓库
      • 改进Pygal图表
      • 添加自定义工具提示

本篇文章:我们叙述如何编写一个独立的程序,并对其获取的数据进行可视化。这个程序将使用 Web应用编程接口(API)自动请求网站的特点信息而不是整个网页,再对这些信息进行可视化。

Web API

Web API 是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互。这种请求称为APi调用。请求的数据将以易于处理的格式(如JSON或CSV)返货。依赖于外部数据源的大多数应用程序都依赖于API调用,如集成社交媒体网站的应用程序。

Git 和 GitHub

Git

分布式版本控制系统… …

GitHub

程序员协作开发项目网站… …

使用 API 调用请求数据

GitHub 的API 让我们能够通过API调用来请求各种信息。

https://api.github.com/search/repositories?q=language:python&sort=stars

这个调用返回GItHub当前托管了多少个Python项目,还有有关最受欢迎的Python仓库的信息。

第一部分:(https://api.github.com/) 将请求发送到GitHub网站中响应API调用的部分

第二部分:(searfch/respositories) 让API搜索GItHub上的所有仓库

responsitories 后面的问号指出我们要传递一个参数。q表示查询,而等号让我们能够开始指定查询 (q=) 。通过使用 language : python ,我们指出只想获取主要语言为 python的仓库的信息。

最后一部分:(&sort=stars) 执行项目按其获得的星级进行排序。

安装 requests

requests 包让python程序能够轻松地向网站请求信息以及检查返回的响应。

安装命令:

pip install --user requests

处理响应 API

我们来尝试编写一个程序,它执行 API 调用并处理结果,找出 GItHub 上星级最高的Python项目

# 导入requests 包
import requestsurl = 'https://api.github.com/search/repositories?q=language:python&sort=stars'r = requests.get(url)
print("Starts code:",r.status_code)response_dict = r.json()
print(response_dict.keys())

代码解析:

import requests 用于导入 requests 模块
然后存储API 将要调用的URL,然后使用 requests 来执行调用。
我们调用 get() 并将 url 传递给它,再将响应对象存储在变量当中。
响应对象包含一个名为 status_code 的属性,它让我们知道请求是否成功了(状态码为200表示成功)

API 返回的信息格式为JSON,因为们还使用json() 将这些信息转换为一个 python 字典。

执行结果:
在这里插入图片描述

处理响应字典

现在将存储在字典当中的api调用返回信息进行处理

import requestsURL ="https://api.github.com/search/repositories?q=language:python&sort=stars"r = requests.get(URL)
print("Status code:", r.status_code)response_dict = r.json()
print("Total repositories:",response_dict['total_count'])#探索有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))#研究第一个仓库
repo_dict = repo_dicts[0]for key in sorted(repo_dict.keys()):print(key)

代码解析:

total_count 指出了 github 总共包含了多少个python仓库
与’items’相关的是一个列表,其中包含很多字典,而每个字典都包含有关一个 Python仓库的信息。打印 repo_dicts 的长度用于知道我们获得了多少个仓库的信息。
repo_dicts 是为了更深入地了解返回的有关每个仓库的信息,将repo_dictss 中的第一个字典提取,并存储在变量 repo_dicts 中。打印该字典包含的键数,查看其中包含多少信息。

repo_dict 中包含的键有:
在这里插入图片描述

提取其中一些键所对应的值:

print("\nSelected information about first repository:")
print('Name:',repo_dict['name'])
print('Owner:',repo_dict['owner']['login'])
print('Stats:',repo_dict['stargazers_count'])
print('Repository',repo_dict['html_url'])
print('Created:',repo_dict['created_at'])
print('Updated:',repo_dict['updated_at'])
print('Description:',repo_dict['description'])

运行结果:
在这里插入图片描述

我们打印了表示第一仓库的字典中与很多键相关联的值,我们打印了项目的名称,而项目的名称是用一个字典来表示的,所以我们使用关键字 Owner来访问表示所有者的字典,再使用 key来获取所有者的登录名。
该项目的名称为:public-api,所有用户Owner: public-apis。其中有 278863个用户给这个项目加星。
Repository 是该项目的 URL,而Created是其创建时间,Updated是其最近更新时间。

如果你想提取更多的其他项目相关信息,可以在提取之前,加一层循环。

print("\nSelected information about first repository:")for repo_dict in repo_dicts:print('Name:',repo_dict['name'])print('Owner:',repo_dict['owner']['login'])print('Stats:',repo_dict['stargazers_count'])print('Repository',repo_dict['html_url'])print('Created:',repo_dict['created_at'])print('Updated:',repo_dict['updated_at'])print('Description:',repo_dict['description'])

监视API的速率限制

大多数 API 都存在速率限制,即你在特定时间内可执行的请求数存在限制。要获悉GitHub的限制,可以在浏览器中录入 :https://api.github.com/rate_limit

在这里插入图片描述

在这条信息中 : search :{
“limit” :10
}
可得知极限为每分钟10个请求,而在当前的一分钟内,我们还可以发起10个请求,即 “remaining”:8

使用 Pygal 可视化仓库

为了更方便的查阅信息,我们将其进行视图可视化

希望将信息以视图方式展示,需要先导入 pygal包。

当然!如果你用 pycharm 编辑代码,别忘了在集成工具中进行安装

import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS#用于存储包含图表信息的两个空列表
names,stars =[],[]for repo_dict in repo_dicts:names.append(repo_dict['name'])stars.append(repo_dict['stargazers_count'])my_style = LS('#333366',base_style =LCS)chart = pygal.Bar(style = my_style,x_label_rotation =45,show_legend =False)chart.title = 'Most-Starred Python Projects on GitHub'chart.x_labels = nameschart.add('',stars)chart.render_to_file('python_repos.svg')

这段代码也是基于之前的demo继续加的内容,这里不在进行过多赘述,如果有感兴趣的小伙伴可以自行深究一下,但内容其实还是简单的。

这里在看一下运行效果:
在这里插入图片描述

图表可视化成功之后,我们继续迭代。

改进Pygal图表

下面我们对图表的样式进行改造。

我们需要进行多方面的定制,因此先来稍微调整代码的结构,创建一个配置对象,在其中包含要传递给Bar() 的所有定制:

names,stars =[],[]for repo_dict in repo_dicts:names.append(repo_dict['name'])stars.append(repo_dict['stargazers_count'])my_style = LS('#333366',base_style =LCS)#创建配置对象my_config = pygal.Config()my_config.x_label_rotation = 45my_config.show_legend = Falsemy_config.title_font_size = 24my_config.label_font_size = 14my_config.major_label_font_size = 18my_config.truncate_label = 15my_config.show_y_guides = Falsemy_config.width = 1000chart = pygal.Bar(my_config,style = my_style)chart.title = 'Most-Starred Python Projects on GitHub'chart.x_labels = nameschart.add('',stars)chart.render_to_file('python_repos.svg')

在这里插入图片描述

添加自定义工具提示

在pygal中,将鼠标指向条形将显示它表示的信息,这通常称为工具提示。

 chart = pygal.Bar(my_config,style = my_style,x_label_rotation =45,show_legend=False)chart.title = 'Python projects'chart.x_labels = ['httpie','djange','flask']plot_dicts = [{'value': 16101,'label':'Description of httpie.'},{'value': 15028,'label':'Description of django.'},{'value': 14798,'label':'Description of flask.'},]chart.add('',plot_dicts)chart.render_to_file('bar_descriptions.svg')

运行效果:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/677474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse导入maven项目或者创建maven项目时,报错Could not calculate build plan: Plugin

问题&#xff1a;Eclipse导入maven项目或者创建maven项目时,报错Could not calculate build plan: Plugin 1.上述问题大概是项目不能加载此maven插件&#xff0c;在pom文件中添加依赖项 <dependency><groupId>org.apache.maven.plugins</groupId><artifa…

二级建造师试题答案?学生党都在用的6款搜题工具来了 #学习方法#学习方法#微信

作为大学生&#xff0c;我们应该善于利用各种学习工具&#xff0c;提高学习效率和质量。 1.灵兔搜题 这是一个公众号 包含大学网课、课后教材、选修课、mooc慕课及各类职业资格证、学历提升考试、公务员考试等常见题库。 下方附上一些测试的试题及答案 1、Uri主要由三部分组…

Python实战:用Python程序实现春晚刘谦魔术

刘谦春晚魔术是一个让人叹为观止的魔术表演&#xff0c;其中涉及到了数学、编程和创意的结合。看了春晚魔术的朋友们&#xff0c;是不是好奇春晚刘谦的魔术是怎么变的。 在这篇文章中&#xff0c;我们将通过 Python 程序实现春晚刘谦魔术&#xff0c;让读者对这个魔术有更深入…

【GAMES101】Lecture 20 光场

目录 光场&#xff08;Light Field / Lumigraph&#xff09; 广场照相机 光场&#xff08;Light Field / Lumigraph&#xff09; 我们在三维的世界中从一个观测点出发看到这么一幅二维的画面 如果有这么一副画布可以完美的显示出从观察点看到的画面&#xff0c;那用这幅画布…

idea设置terminal为git

要在IntelliJ IDEA中设置终端为Git Bash&#xff0c;请按照以下步骤操作&#xff1a; 打开 Settings&#xff08;设置&#xff09;。点击 Tools&#xff08;工具&#xff09;选项卡。进入 Terminal&#xff08;终端&#xff09;界面。在 Shell Path 下选择 Browse&#xff08;…

Redis发布订阅及事务管理

目录 一、发布订阅 1.1、常用命令 1.2、示例演示 二、事务管理 2.1 Multi、Exec、Discard 2.2 示例演示 2.3 事务的错误处理 2.4 事务的冲突问题 2.4.1 事务场景 2.4.2 悲观锁 2.4.3 乐观锁 2.4.4 事务解决冲突—WATCH 2.4.5 UNWATCH 2.4.6 Redis事务的三个特性 …

ES实战-book笔记1

#索引一个文档,-XPUT手动创建索引, curl -XPUT localhost:9200/get-together/_doc/1?pretty -H Content-Type: application/json -d {"name": "Elasticsearch Denver","organizer": "Lee" } #返回结果 {"_index" : "g…

尚硅谷 Vue3+TypeScript 学习笔记(中)

目录 三、路由 3.1. 【对路由的理解】 3.2. 【基本切换效果】 3.3. 【两个注意点】 3.4.【路由器工作模式】 3.5. 【to的两种写法】 3.6. 【命名路由】 3.7. 【嵌套路由】 3.8. 【路由传参】 query参数 params参数 3.9. 【路由的props配置】 3.10. 【 replace属性…

【GAMES101】Lecture 20 颜色

目录 光 颜色 加色系统 CIE RGB颜色匹配实验 颜色空间 CIE XYZ颜色空间 HSV颜色空间(Hue-Saturation-Value) CIELAB空间 减色系统&#xff1a;CMYK 光 光是由不同波长的光波组成的&#xff0c;其中可见光的波长范围在400nm到700nm 用谱功率密度&#xff08;Spectral…

Low 级别反射型 XSS 攻击演示(附链接)

环境准备 如何搭建 DVWA 靶场保姆级教程&#xff08;附链接&#xff09;https://eclecticism.blog.csdn.net/article/details/135834194?spm1001.2014.3001.5502 测试 打开 DVWA 靶场并登录&#xff0c;找到反射型 XSS 页面&#xff08;笔者这里是 Low 级别&#xff09; 先…

图像处理之《鲁棒图像隐写术:隐藏频率系数中的信息》论文精读

一、文章摘要 隐写术是一种将秘密信息隐藏到公共多媒体对象中而不会引起第三方怀疑的技术。然而&#xff0c;大多数现有的工作不能提供良好的抗有损JPEG压缩鲁棒性&#xff0c;同时保持相对较大的嵌入容量。提出了一种基于可逆神经网络的端到端鲁棒隐写系统。该方法将秘密信息…

医学搜题神器找答案? #知识分享#职场发展

大学生必备的搜题工具&#xff0c;专业课本习题、电子版教材、考研资料、英语四六级等考试题目也能一并搜索&#xff0c;每道题目都有详细的讲解&#xff0c;每个都堪称大学神器。 1.题小聪 这是一个公众号 它支持文本搜索、扫码搜书、拍照搜索&#xff0c;不会的题目直接对…

幻兽帕鲁PalWorld服务器2024年配置选择

幻兽帕鲁PalWorld是一款备受期待的虚拟游戏&#xff0c;其独特的幻兽系统和丰富的世界观吸引了大量玩家。然而&#xff0c;随着游戏日益受到关注&#xff0c;服务器的配置选择成为了关键问题。2024年&#xff0c;随着技术不断发展&#xff0c;玩家对于游戏体验的需求也在不断提…

[word] word自定义编号格式怎么设置 #经验分享#职场发展#职场发展

word自定义编号格式怎么设置 在Word文档的编辑中&#xff0c;经常会给段落添加编号&#xff0c;但是在编号的使用过程中我们会遇到很多问题&#xff0c;今天给大家分享word自定义编号格式怎么设置&#xff0c;希望能帮到您&#xff01; 1.如何自定义编号格式&#xff1f; 点击…

NAS如何成为生产力?使用绿联DX4600 Pro搭建图床并实现创作自由

NAS如何成为生产力&#xff1f;使用绿联DX4600 Pro搭建图床并实现创作自由 哈喽小伙伴们好&#xff0c;我是Stark-C~ 关注我的小伙伴都知道&#xff0c;我之前有分享过我的创作过程与工具&#xff0c;其中介绍了我个人其实一直都是使用Markdown的编辑器来进行图文创作的。 我…

如何在 Mac 上恢复永久删除的文件:有效方法

您是否错误地从 Mac 中删除了某个文件&#xff0c;并且确信它已经永远消失了&#xff1f;好吧&#xff0c;你可能错了。即使您认为已永久删除计算机上的数据&#xff0c;仍有可能将其恢复。 在本文中&#xff0c;您将了解如何在 Mac 上恢复永久删除的文件&#xff0c;并了解增…

基于微信小程序的校园失物招领小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【Web】小白友好的Java内存马基础学习笔记

目录 简介 文件马与内存马的比较 文件马原理 内存马原理 内存马使用场景 内存马分类 内存马注入方式 这篇文章主要是概念性的&#xff0c;具体技术细节不做探究&#xff0c;重点在祛魅。 简介 内存马&#xff08;Memory Shellcode&#xff09;是一种恶意攻击技术&…

【后端高频面试题--Mybatis篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;后端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 后端高频面试题--Mybatis篇 什么是Mybatis&#xff1f;Mybatis的优缺点&#xff1f;Mybatis的特点…

大水仙花数求解

输入位数&#xff0c;求解水仙花数。暴力求解&#xff0c;位数如果太多&#xff0c;会超时。 思路&#xff1a; &#xff08;1&#xff09;11333355和33331155看上去是不一样的两个数&#xff0c;但是它们又一样&#xff0c;因为相同数字出现的次数一样。 &#xff08;2&…