Python 调用 GitHub API 全攻略:获取用户信息、管理存储库与自动化操作
作者:API传播员 · 2025-10-21 · 阅读时间:4分钟
我们将着眼于如何在 Python 都提供了一种与该 API 交互的直接方式。
使用 Python 与 GitHub API 交互
在开始之前,您需要生成一个访问令牌,并确保选择了正确的权限范围以执行所需的操作。以下是 GitHub API 的基本 URL:
https://api.github.com/
接下来,我们将通过 Python 发起 GET 请求以检索一些用户数据。
示例:获取用户信息
以下是一个简单的代码示例,展示如何获取 GitHub 用户的基本信息:
import requests
username = "apify"# GitHub 用户名
url = f"https://api.github.com/users/{username}"user_data = requests.get(url)
print(user_data.json())
输出示例:
{
"avatar_url": "https://avatars.githubusercontent.com/u/24586296?v=4",
"bio": "我们正在使网络更加可编程。",
"blog": "https://apify.com/",
"company": null,
"created_at": "2016-12-15T10:36:52Z",
"email": "hello@apify.com",
"followers": 279,
"following": 0,
"html_url": "https://github.com/apify",
"id": 24586296,
"location": "互联网",
"login": "apify",
"name": "apify",
"public_repos": 108,
"type": "组织",
"updated_at": "2023-08-03T08:51:47Z"
}
通过上述代码,您可以获取用户的个人简介、电子邮件、公共存储库等信息。
获取用户的存储库列表
要检索用户的存储库列表,可以使用 /repos API 端点。以下是一个示例代码:
import requests
base_url = "https://api.github.com"def get_user_repos(username):
url = f"{base_url}/users/{username}/repos"
response = requests.get(url)
if response.status_code == 200:
repositories_data = response.json()
return repositories_data
else:
return Noneusername = "apify"
user_repos = get_user_repos(username)if user_repos:
print(f"{username} 的存储库:")
for repo in user_repos:
print(repo["name"])
else:
print("检索存储库失败。")
示例输出:
apify 的存储库:
actor-crawler
actor-scraper
actor-template
...
您还可以通过查询参数对结果进行筛选,例如按更新时间排序或限制返回的存储库数量:
def get_user_repos(username):
url = f"{base_url}/users/{username}/repos"
query_params = {"sort": "updated", "per_page": 5}
response = requests.get(url, params=query_params)
if response.status_code == 200:
repositories_data = response.json()
return repositories_data
else:
return None
示例输出(按更新时间排序):
apify 的存储库:
crawler
fingerprint-suite
browser-pool
proxy-chain
创建新的存储库
要创建一个新的存储库,您需要使用 POST 请求并提供访问令牌。以下是示例代码:
import requests
base_url = "https://api.github.com"def create_repo(access_token, repo_name, repo_descr=None):
url = f"{base_url}/user/repos"
headers = {"Authorization": f"token {access_token}"}
data = {
"name": repo_name,
"description": repo_descr,
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 201:
repo_data = response.json()
return repo_data
else:
return Noneaccess_token = "YOUR_ACCESS_TOKEN"
repo_name = "apify_testing"
repo_descr = "使用 Python GitHub API 创建的新存储库。"new_repo = create_repo(access_token, repo_name, repo_descr)if new_repo:
print("成功创建新的公共存储库!")
else:
print("无法创建新的存储库。")
执行后,您可以在 GitHub 上看到新创建的存储库。
更新存储库描述
通过 PATCH 请求,您可以更新存储库的描述。以下是示例代码:
def update_repo_descr(access_token, username, repo_name, new_description):
url = f"{base_url}/repos/{username}/{repo_name}"
headers = {"Authorization": f"token {access_token}"}
data = {"description": new_description}
response = requests.patch(url, headers=headers, json=data)
if response.status_code == 200:
updated_repo_data = response.json()
return updated_repo_data
else:
return None
access_token = "YOUR_ACCESS_TOKEN"
username = "GITHUB_USERNAME"
repo_name = "apify_testing"
new_description = "这是使用 PATCH 请求更新的描述。"updated_repo = update_repo_descr(access_token, username, repo_name, new_description)if updated_repo:
print("存储库描述已更新。")
else:
print("无法更新存储库描述。")
删除存储库
最后,您可以通过 DELETE 请求删除存储库:
def delete_repo(access_token, username, repo_name):
url = f"{base_url}/repos/{username}/{repo_name}"
headers = {"Authorization": f"token {access_token}"}
response = requests.delete(url, headers=headers)
if response.status_code == 204:
print("存储库已成功删除。")
elif response.status_code == 404:
print("存储库未找到或已删除。")
else:
print(f"删除失败,状态码:{response.status_code}")
access_token = "YOUR_ACCESS_TOKEN"
username = "GITHUB_USERNAME"
repo_name = "apify_testing"delete_repo(access_token, username, repo_name)
示例输出:
存储库已成功删除。
通过本文,您已经学习了如何使用 Python 与 GitHub API 进行交互,包括获取用户信息、管理存储库等操作。这些技能可以帮助您自动化任务并将 GitHub 功能集成到自己的项目中。继续探索 GitHub API 的更多功能,并将其应用到实际开发中!
原文链接: https://blog.apify.com/python-github-api/
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- .NET Core 3.1 WebAPI+Vue+Element UI实现文件上传
- Python与Ollama的开发案例
- 知识图谱API解析
- 如何在Excel VBA中调用REST API
- 恒温器API终极指南
- API 网关集成 SkyWalking 打造全方位日志处理
- 什么是SalesforceAPI
- 设计API前,先建模你的API:API建模指南
- 使用Cucumber框架进行API测试的Playwright示例
- 2025年提升软件质量的十大API测试工具
- 强力监控!Spring Boot 3.3 集成 Zipkin 全面追踪 RESTful API 性能
- API安全:内部审计师快速参考指南