You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用GitHub REST API获取指定用户信息并处理公司字段

解决GitHub REST API获取完整用户数据的问题

GitHub的/search/users接口仅返回用户的精简信息,要获取你需要的全部字段,必须针对每个用户的login调用/users/{login}详情接口。以下是实现需求的完整代码,包含字段提取、公司信息清理以及数据保存的优化:

完整代码实现

import requests
import json

# 搜索查询参数
query = "location:Bengaluru+followers:>100"
search_url = f"https://api.github.com/search/users?q={query}&sort=followers&order=desc"

# 可选:添加GitHub API Token以提升速率限制(替换为你的个人token)
headers = {
    "Authorization": "token YOUR_GITHUB_TOKEN"
}

# 获取搜索结果
response = requests.get(search_url, headers=headers)
response.raise_for_status()  # 捕获HTTP请求错误
search_data = response.json()

# 存储处理后的用户数据
processed_users = []

# 遍历每个用户,获取完整详情
for user_item in search_data["items"]:
    login = user_item["login"]
    user_detail_url = f"https://api.github.com/users/{login}"
    
    detail_response = requests.get(user_detail_url, headers=headers)
    detail_response.raise_for_status()
    user_detail = detail_response.json()
    
    # 处理company字段:去首尾空格、移除首个@、转大写
    company = user_detail.get("company")
    if company:
        cleaned_company = company.strip().lstrip("@").upper()
    else:
        cleaned_company = None
    
    # 提取所需字段
    processed_user = {
        "login": user_detail["login"],
        "name": user_detail.get("name"),
        "company": cleaned_company,
        "location": user_detail.get("location"),
        "email": user_detail.get("email"),
        "hireable": user_detail.get("hireable"),
        "bio": user_detail.get("bio"),
        "public_repos": user_detail.get("public_repos"),
        "followers": user_detail.get("followers"),
        "following": user_detail.get("following"),
        "created_at": user_detail.get("created_at")
    }
    
    processed_users.append(processed_user)

# 保存处理后的数据到文件(使用with语句自动管理资源)
with open("user_data.json", "w", encoding="utf-8") as f:
    json.dump(processed_users, f, indent=4, ensure_ascii=False)

print(f"已成功获取并保存{len(processed_users)}条用户数据")

关键说明

  • API调用逻辑:搜索接口返回的items列表仅包含基础信息,必须通过每个用户的login调用详情接口才能拿到完整字段
  • Company字段清理:通过strip()去除首尾空格,lstrip('@')仅移除开头的@符号(不会影响中间或末尾的@),最后用upper()转为大写
  • 速率限制:未登录的GitHub API请求速率限制为每小时60次,添加个人Token后可提升至每小时5000次,建议替换代码中的YOUR_GITHUB_TOKEN
  • 错误处理:使用raise_for_status()捕获HTTP请求错误,避免静默失败
  • 文件操作优化:使用with语句自动管理文件资源,无需手动关闭文件

内容的提问来源于stack exchange,提问作者SWAYAM THAPLIYAL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:31:18