python-使用API

news2024/11/16 5:30:25

python-使用API

使用github的api-即url地址请求数据

https://api.github.com/search/repositories?q=language:python&sort=stars
#这个调用返回GitHub当前托管了多少个Python项目,还有有关最受欢迎的Python仓库的信息。

在浏览器中输入上面地址可以看到该接口(api)返回的json数据

这里推荐下载JSON Formatter的扩展程序,会自动将json数据整理后呈现

在这里插入图片描述

1.安装requests

  • requests包让Python程序能够轻松地向网站请求信息以及检查返回的响应
  • 在命令行窗口输入指令安装
pip install --user requests

2.使用requests.get()方法

下面来编写一个程序,它执行API调用并处理结果,找出GitHub上星级最高的Python项目

import requests

url = "https://api.github.com/search/repositories?q=language:python&sort=stars"
r = requests.get(url)
#使用requests.get()方法来请求地址,返回Response对象

print(r.status_code)
#返回请求状态码

req_json = r.json()
#将返回的Response对象的json内容并转成字典{key:value}
for key,value in req_json.items():
    print(f"{key}")
    
"""输出:
200
total_count
incomplete_results
items
之后可通过req_json['total_count']
req_json['incomplete_results']
req_json['items']
进行访问数据
"""

接着你就可以使用字典和列表的嵌套去访问你想要的数据。

监视API的速率限制

大多数API都存在速率限制,即你在特定时间内可执行的请求数存在限制。

#浏览器输入https://api.github.com/rate_limit
    
{
  "resources": {
    "core": {
      "limit": 60,
      "remaining": 58,
      "reset": 1426082320
    },
    "search": {"limit": 10,"remaining": 8,"reset": 1426078803}
  },
  "rate": {
    "limit": 60,
    "remaining": 58,
    "reset": 1426082320
  }
}

#serch为搜索极限为每分钟10个请求,而在当前这一分钟还可以请求8次
#reset值指的是配额将重置的Unix时间或新纪元时间(1970年1月1日午夜后多少秒)

数据可视化

将获取到的数据进行可视化,呈现GitHub上Python项目的受欢迎程度

需求:

我们将创建一个交互式条形图:条形的高度表示项目获得了多少颗星。单击条形将带你进入项目在GitHub上的主页。

import requests
import csv
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import  pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS

url = "https://api.github.com/search/repositories?q=language:python&sort=stars"
r = requests.get(url)

req_json = r.json()

name= []
html_url = []
polt_dicts = []
for item in req_json['items']:
    name.append(item['name'])

    html_url.append('html_url')
    polt_dict = {
        'value':item['stargazers_count'],
        #value决定了表的值和高度
        'label':item['description'],
        #lable决定了鼠标悬停显示的提示内容
        'xlink': item['html_url'],
        #xlink决定了点击后的连接地址
    }
    polt_dicts.append(polt_dict)

my_style = LS('#333366',base_style=LCS)

my_config = pygal.Config()
my_config.x_label_rotation = 45
my_config.show_legend = False
my_config.title_font_size = 24
my_config.label_font_size = 14
my_config.major_label_font_size = 18
my_config.truncate_label = 15
my_config.show_y_guides = False
my_config.width = 1000
#一些参数

chart = pygal.Bar(my_config,style = my_style)
chart.title ="Most -Stars python Project on GitHub"
#设置title
chart.x_labels = name
#设置x轴的标签
chart.add('',polt_dicts)
#设置其他信息
chart.render_to_file('python_repos.svg')
#保存为:python_repos.svg

在这里插入图片描述

可以实现鼠标悬停后显示相关描述,点击进入项目的github地址

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

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

相关文章

C++第二十一弹---vector深度剖析及模拟实现(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、基本结构 2、默认成员函数 2.1、构造函数 2.2、析构函数 2.3、拷贝构造函数 2.3、赋值操作符重载 3、数据访问 4、迭代器获取 总结 …

Redis篇 String的基本命令

String基本命令 一.setnx,setex,psetex二. 增加删除命令三.append,setrange,getrange,strlen命令1.append2.setrange3.strlen4.getrange 四.String的内部编码方式 一.setnx,setex,psetex setex和psetex设置过期时间 setex设置的过期时间是秒级 psetex设置的过期时间是毫秒级 二…

【错误记录】HarmonyOS 运行报错 ( Failure[MSG_ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL] )

文章目录 一、报错信息二、问题分析二、解决方案 一、报错信息 在 DevEco Studio 中 , 运行程序 , 编译时正常编译 , 但是在真机运行时 , 报如下错误 , 核心报错信息是 " Failure[MSG_ERR_INSTALL_FAILED_VERIFY_APP_PKCS7_FAIL] " ; 完整报错信息 : 05/29 10:58:55…

探索Django 5: 从零开始,打造你的第一个Web应用

今天我们将一起探索 Django 5,一个备受开发者喜爱的 Python Web 框架。我们会了解 Django 5 的简介,新特性,如何安装 Django,以及用 Django 编写一个简单的 “Hello, World” 网站。最后,我会推荐一本与 Django 5 相关…

工控一体机10.1寸显示器电容触摸屏(YA07JK)产品规格说明书

如果您对工控一体机有任何疑问或需求,或者对如何集成工控一体机到您的业务感兴趣,可移步控芯捷科技。 一、硬件功能介绍 1.1 YA07JK介绍 YA07JK 是我公司推出的一款新型安卓屏,使用电容触摸屏。4 核 Cortex-A7 架构,主频1.2GHz …

React-Redux结合@Reduxjs/Toolkit实现函数组件化(数据持久化,刷新页面数据不丢)

函数式组件和类式组件的优缺点儿 函数组件(Function Component)和类组件(Class Component)是React中的两种定义组件的方式。函数组件是以一个函数的方式定义组件,而类组件则是以ES6的类继承React.Component来定义组件…

后端企业级开发之yaml数据序列化格式文件详解2024

yaml格式 数据格式 yaml 是一种数据序列化的格式 容易阅读 容易与脚本语言交互 以数据为核心 重数据轻格式 我们要知道他怎么书写 大小写敏感 属性层级关系使用多行描述 每行结尾使用冒号结束 使用缩进表示层级关系 同层级左侧对其 只运行使用空格 属性前面添加空格 #表…

《Ai企业知识库》-rasa-初步使用

根据上面的环境准备之后: 《Ai企业知识库》-模型实践-rasa开源学习框架-搭建简易机器人-环境准备(针对windows)-02-CSDN博客 基础的使用: rasa项目初始化: rasa init 首先进入目标文件夹 在dos窗口(目标文件夹下&#xff09…

智能合约革命:Web3引领智能化商业的未来

随着区块链技术的日益成熟和普及,智能合约作为其重要应用之一,正在逐渐改变着商业世界的面貌。Web3作为下一代互联网的代表,以其去中心化、加密安全的特性,为智能合约的发展提供了无限可能,将智能合约应用于商业领域的…

海云安两大金融案例入编行业典范,七大安全领域实力登榜《2024中国金融网络安全全景图》

近日,数说安全与《中国信息安全》杂志联合编写并发布了《2024年中国金融行业网络安全研究报告》(以下简称报告)、《2024年中国金融行业网络安全案例集》(以下简称案例集)、《2024年中国金融行业网络安全市场全景图》&a…

apexcharts数据可视化之雷达图

apexcharts数据可视化之雷达图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基础雷达图多组数据雷达图雷达图标记点 基础雷达图 import ApexChart from react-apexcharts;export function BasicRadar() {// 数据序列const series [{name…

Pytorch Lighting 库的学习 mvsplat 的笔记

变量理解: context_image: 表示投影的 refrence image Epipolar Transformer vs Swin Transformer : 不同于 Pixel Splat 使用的是 Epipolar Transformer. MVspalt 使用的是 Swin Transformer, 但是作者在 Code 里面 也使用了 Epipolar Tran…

新能源汽车推行精益生产:绿色动力下的效率革命

在新能源汽车行业迅猛发展的当下,推行精益生产已成为提升竞争力的关键所在。精益生产,作为一种以客户需求为导向、追求流程最优化和浪费最小化的管理理念,正逐步在新能源汽车领域展现出其独特的魅力。 新能源汽车的兴起,不仅代表了…

人工智能——什么是摩尔定律以及它如何影响人工智能?

1. 概述 摩尔定律是现代技术发展中一个至关重要的基石。它预言了微芯片上晶体管的数量大约每两年翻一番,这一现象导致了计算能力的指数级增长。在过去的50多年里,这一定律一直是推动技术进步的强大动力,并且对人工智能领域产生了深远的影响。…

基于h5和大数据的游戏数据型网站-计算机毕业设计源码30844

摘 要 在目前的形势下,科技力量已成为我国的主要竞争力。而在科学技术领域,计算机的使用逐渐达到成熟,无论是从国家到企业再到家庭,计算机都发挥着其不可替代的作用,可以说计算机的可用领域遍及生活、工作的各个方面。…

windows web提权

#Web到Win-系统提权-人工操作 如果提权中无法执行命令的话,可以尝试上传cmd.exe到可读写目录再调用 优点:解决实时更新不集成的EXP 缺点:操作繁琐,需要各种复现调试 1、信息收集 参考常见命令(见上图) …

YOLOv10最详细全面讲解2- 目标检测-环境搭建、训练自己的数据集

YOLOv10没想到出来的如此之快,作为一名YOLO的爱好者,以YOLOv5和YOLOv8的经验,打算出一套从数据集装备->环境配置->训练->验证->目标追踪全系列教程。请大家多多点赞和收藏!!! 系列文章&#xf…

在table表格中如何给tr的每一个子元素加haver效果

效果图: 核心代码: tbody tr :hover {background-color: #d5d5d5; } 改变子元素 tbody tr:hover {background-color: #d5d5d5; } 改变父元素 两段代码看起来一样,其实不一样,其中差了一个空格字符 希望可以帮到大家

企业内部聊天软件Riot部署

ubuntu docker 简介 Riot(原Vector)是使用Matrix React SDK构建的Matrix网络聊天客户端,开源免费,功能丰富,支持私人对话,团队对话,语言视频对话,上传文件,社区互动。支持在聊天界面添加各种有趣的插件,比如RSS等各种机器人、虚拟币实时监控等。并且所有通过Riot传…

java版本数字化时代的智能ERP管理系统:引 领企业高 效管理与创新发展

随着数字化浪潮的席卷,现代企业对于高 效、稳定、易于扩展的管理系统需求愈发迫切。为了满足这一需求,我们倾力打造了一款基于Java技术的企业级资源规划(ERP)管理系统。该系统以Spring Cloud Alibaba、Spring Boot、MybatisPlus、…