Python获取GitCode项目信息

前言

在进行开源项目数据分析时,GitCode作为国内优质的代码托管平台,其API能提供丰富的项目数据(如星标数、分支信息、贡献者列表等)。本教程针对Python初学者,从API准备到代码实现,全程拆解爬取流程,助力快速获取GitCode项目数据用于分析。


环境配置

  1. Python3requests

    bash 复制代码
    pip install requests
  2. GitCode令牌

    登录GitCode账号,进入「个人设置 → 访问令牌」,新建令牌并妥善保存(如已有令牌可以跳过此步骤)。


核心爬取步骤

明确API接口

需求 API接口对应格式
搜索相关仓库 https://api.gitcode.com/api/v5/search/repositories
具体项目详情 https://api.gitcode.com/api/v5/repos/{用户名}/{项目名}

参数

参数名 描述 类型 数据类型
access_token* 用户授权码 query string
page 当前的页码 最大为 100 query int
per_page 每页的数量,最大为 50 query int
q* 搜索关键字 query string
sort 排序字段,last_push_at(更新时间)、stars_count(收藏数)、forks_count(Fork 数),默认为最佳匹配 query string
order 排序顺序 (默认:desc) query string
owner 仓库所属空间地址(组织或个人的地址path) query string
fork 是否搜索含 fork 的仓库,如果显示,受白名单限制,默认:否 query string
language 筛选指定语言的仓库 query string

参考文章:
搜索接口文档 | GitCode 帮助文档
gitcode-docs-5.0 | GitCode 帮助文档

有了上述两个API接口就可以直接通过浏览器访问,访问到的数据和后续爬取到的数据是一致的。
2.

编写爬取代码

复制代码
  ##### 根据关键词爬取项目信息

  ```python
  import requests

  def search(q, token, page=1):
      url = f"https://api.gitcode.com/api/v5/search/repositories?q={q}&access_token={token}&page={page}"
      response = requests.get(url)
      projects = response.json()
      if len(projects) != 0:
          projects += search(q, token, page+1)
      return projects
  ```

  通过以上代码,就可以得到一个包含项目信息的字典组成的列表数据。后续可以使用[pandas](https://pandas.pydata.org/)进行存储和数据分析。  


  到这里应该能满足大多数的需求,但如果以上数据中仍然没有你需要的字段。那就需要去每一个仓库的URL中获取你所需要的字段。
复制代码
  ##### 爬取每个项目的详细信息

  ```python
  import requests

  def search(q, token, page=1):
      url = f"https://api.gitcode.com/api/v5/search/repositories?q={q}&access_token={token}&page={page}"
      response = requests.get(url)
      projects = response.json()
      for i in range(len(projects)):
          projects[i] = projects[i] | detail(projects[i].get("url"), token)
      if len(projects) != 0:
          projects += search(q, token, page+1)
      return projects

  def detail(url, token):
      url += '?access_token=' + token
      response = requests.get(url)
      return response.json()
  ```

  通过以上代码,就可以得到一个包含项目几乎所有信息的字典组成的列表数据。应该能满足绝大多数需求了。

常见问题与解决方案

401/403错误(权限问题)

  • 检查URL连接中是否包含令牌,以及令牌是否正确。
    例如: https://api.gitcode.com/api/v5/repos/{用户名}/{项目名}&access_token={token}
  • 确保令牌权限在只读以上。

1000错误(参数错误)

  • 检查URL https://api.gitcode.com/api/v5/search/repositories 中是否传入了 q
  • 检查其他参数是否传入正确。

欢迎纠正和完善~~~

相关推荐
金銀銅鐵1 小时前
用 Python 实现 Take-Away 游戏
python·游戏
copyer_xyf2 小时前
Agent 流程编排
后端·python·agent
copyer_xyf2 小时前
Agent RAG
后端·python·agent
copyer_xyf3 小时前
【RAG】向量数据库:milvus
后端·python·agent
copyer_xyf3 小时前
Agent 记忆管理
后端·python·agent
冬奇Lab13 小时前
每日一个开源项目(第135篇):codebase-memory-mcp - 给 AI Agent 一张代码库的知识图谱
人工智能·开源·llm
星云穿梭18 小时前
用Python写一个带图形界面的学生管理系统——完整教程
python
金銀銅鐵18 小时前
用 Pygame 实现 15 puzzle
python·数学·游戏
uniquejing21 小时前
《每次 API 调用前扔掉 43% Token,我开源了一个 AI 提示词瘦身工具》
开源
黄忠1 天前
大模型之LangGraph技术体系
python·llm