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
  • 检查其他参数是否传入正确。

欢迎纠正和完善~~~

相关推荐
风吹夏回8 分钟前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
小熊Coding33 分钟前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋937 分钟前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本43 分钟前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
坚果的博客1 小时前
从零实现 GitCode OAuth 登录 —— 鸿蒙 6 应用实战
gitcode
田里的水稻2 小时前
OE_ubuntu26.04与宿主机之间复制粘贴内容
人工智能·python·机器人
冬奇Lab2 小时前
每日一个开源项目(第105篇):Twenty - 跳出 Salesforce 的圈套,定义现代开源 CRM
前端·后端·开源
jiayong232 小时前
02 创建虚拟环境
python
旺仔来了2 小时前
不联网的Linux下部署python环境
linux·开发语言·python
小江的记录本3 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试