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

欢迎纠正和完善~~~

相关推荐
丁引7 分钟前
《数据清洗的艺术:如何用20行核心逻辑优雅地删除无标签图片》
前端·数据库·python
梦想的旅途211 分钟前
企业微信API二次开发:外部群模块功能清单与全场景对接
java·python·企业微信
05664623 分钟前
Python高级——迭代器
开发语言·python·学习
老白干1 小时前
基于 Spring AOP 的操作日志记录:以 DeptController 增删接口为例
java·python·spring
John jj1 小时前
拆解 Telegram 群组频道收录市场:三类方案,一个可运行的评分模型,目前TG中文人工评分加模型评分机制——LetsTG收录“快速”、“无门槛”
大数据·后端·python·深度学习·搜索引擎·django·全文检索
aqi001 小时前
15天学会AI应用开发(十九)使用LangGraph实现持久记忆功能
人工智能·python·大模型·ai编程·ai应用
月光船幽幽1 小时前
KDTree查表实现观测到动作的统计映射
python
2401_868534781 小时前
论信息系统安全保障规划与设计
python·django
微小冷1 小时前
Optiland近轴光学
python·光学仿真·optiland·几何光学·近轴光学·高斯光学