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/