python-使用API来探索GitHub上星级最高的项目

本文介绍如何使用Python调用GitHub API,获取最受欢迎的项目信息,并利用Pygal库进行数据可视化,生成交互式条形图展示项目星数。通过点击条形图,可直接跳转到相应项目页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用API,并使用Pygal可视化仓库

简介

Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互。这种请求称为API调用。请求的数据将以易于处理的格式(如JASONCSV)返回。
使用Pygal可视化仓库,呈现GitHubPython项目的受欢迎程度。将创建一个交互式条形图:条形的高度表示项目获取了多少颗星。单击条形将进入项目在GitHub上的主页。

实际代码如下:

import requests
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS

# 执行API调用并存储响应
url = 'http://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url)
# 响应对象包含一个名为status_code的属性,它让我们知道请求是否成功了(状态200表示请求成功)
print("Status code", r.status_code)

# 将API响应存储在一个变量中(这个API返回JSON格式的信息,因此我们使用方法json()将这些信息转化为一个Python字典)
response_dict = r.json()
print("Total repositories:", response_dict['total_count'])

# 研究有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))

names,plot_dicts=[],[]
for repo_dict in repo_dicts:
    names.append(repo_dict['name'])

#我们定义了一个名为plot_dict的列表,每个字典都包含两个键:‘value’和‘label’。
#Pygal根据与键‘value’相关联的数字来确定条形的高度
#使用与‘label’相关联的字符串给条形创建工具提示
#pygal根据与键‘xlink’相关联的URL将每个条形都转化为活跃的链接。单击图表中的任何条形时,都将在浏览器中打开一个新的标签页,并在其中显示相应项目的GitHub页面
    plot_dict={
        #表示获取多少颗星星
        'value':repo_dict['stargazers_count'],
        #表示对项目的描述
        'label':repo_dict['description'],
        'xlink':repo_dict['html_url']
        }
    plot_dicts.append(plot_dict)

#可视化
my_style = LS('#333366', base_style=LCS)
my_config=pygal.Config()
#让标签绕x轴旋转45度(x_label_rotation=45)
my_config.x_label_rotation=45
#隐藏了图例(show_legend=False)
my_config.show_legend=False
#设置图表标题的字体大小
my_config.title_font_size=24
#设置副标签的字体大小(副标签是x轴上的项目名及y轴上的大部分数字)
my_config.label_font_size=14
#设置主标签的字体大小(主标签是y轴上为5000整数倍的刻度)
my_config.major_label_font_size=18
#使用truncate_label将较长的项目缩短为15个字符(如果你讲鼠标指向屏幕上被截断的项目名,将显示完整的项目名)
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-Starred Python Projects on GitHub'
chart.x_labels = names

chart.add('', plot_dicts)
chart.render_to_file('python_repos.svg')

运行并查看结果
API

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值