前段时间因为工作需要,需要抓取 Github 上的一些信息,于是看看如何能爬取到对应的信息。经过查询,发现 Github 有开放一些 HTTP 接口,可以让我们去调用。虽说直接调用 HTTP 接口也可以实现,但每次都要做入参和出参的封装,使用上非常麻烦。

最后我发现了一款名为 GitHub API for Java 的 SDK,其对 Github 做了深度的封装,使得我们可以更方便地调用 Github 的 HTTP 接口。所以今天这篇文章,就跟大家简单介绍一下这款 SDK 的简单使用。如果大家后续有这个需求,就可以直接拿来就用了!

鉴权方式

Github 提供了多种权限方式,例如:账号密码方式、Personal Access Token 方式、JWT 方式等。这款 SDK 对于这几种方式都支持了,并且还支持通过不同方式传递对应鉴权信息,例如:传参方式、配置文件方式、环境变量方式等等。这里我们只是简单地爬取数据,所以我们使用 Personal Access Token + 简单传参方式 就可以,其实例代码如下所示,非常简单。

GitHub github = new GitHubBuilder().withOAuthToken("my_personal_token").build();

Personal Access Token 的生成,在 Github Setting 的 Developer settings 中,如下图所示。如果你实在找不到,那么可以参考官方文档:创建个人访问令牌 - GitHub Docs

SDK 介绍

通过上面的介绍,我们可以知道通过 GithubBuilder 就可以获取一个 Github 对象,而该 Github 类对象其实就代表了 Github 这个网站。Github 类提供了各种方法,例如:获取 Github 的 IP 地址列表、获取所有组织列表等等,如下图所示。

其实这个 SDK 正是通过这种面向对象的方式设计的,除了最常用的 Github 类之外,还有下面这些类:

  • GHRepository 类:代表 Github 上的一个仓库

  • GHUser 类:代表 Github 上的一个用户

  • GHTeam 类:代表 Github 上的一个 Team

  • GHBranch:代表仓库的一个分支

  • 等等

基本上 Github 上的一切都用一个类来表示,一切都可以抽象为一个对象,这正是面向对象的精髓所在。 而每个类都提供了非常多的方法,例如 GHUser 类提供了方法 isMemberOf(GHOrganization org) 方法来判断一个用户是否是某个组织的成员。

更多方法,大家可以直接查询其对应的 API 文档:Overview (GitHub API for Java 1.300 API)。

快速入门

首先,在项目中引入该 maven 依赖,如下所示。

<dependency><groupId>org.kohsuke</groupId><artifactId>github-api</artifactId><version>1.301</version>
</dependency>

接着直接写一个 HelloGithub 类,如下所示。

public class HelloGithub {public static void main(String[] args) throws IOException {GitHub github = new GitHubBuilder().withOAuthToken("my_personal_token").build();System.out.println(github.getMyself().getName());}
}

直接运行该类便可获取到的 token 对应用户的用户名,如下图所示。

这就是一个最简单的演示了,麻雀虽小五脏俱全,更多的功能等待大家去探索发现。这篇文章链接较多,微信无法跳转外链,给大家造成诸多不便,大家可以点击「查看原文」到我博客上查看。


好了,这就是今天分享的全部内容了。

如果你喜欢今天这篇文章,欢迎一键三连,你们的支持就是我最大的动力!


推荐阅读

  • 认识到这点,你会飞速成长

  • 关于技术驱动业务的一些思考

  • 分享几点我的读书心得

  • 张一鸣:给面试候选人的 5 点建议

  • 一封小小邮件背后的防范策略

  • 成功,就是寻找确定性!

  • 这几本书,让你更懂自己!

  • 这本书能让你看懂中国经济!

  • 变化莫测的时代,如何面对不确定性?

  • 悄悄成长的 2021 年!

如何合法爬取 Github 的信息?相关推荐

  1. 利用Python爬取github上commits信息

    爬取github上commits在1200次以上的用户及commits分布情况 简介 准备 抓取用户个人页面 获取commits信息 打印符合条件用户最近一周commits信息 反爬虫问题 总结 简介 ...

  2. 爬取Github Web API 并存入Mysql数据库

    写在前面 本文内容为爬取GitHub的Web API并存入mysql数据库,内容为华为鸿蒙OS相关的代码. WEB API Web API是网络应用程序接口.它包含了广泛的功能,网络应用通过API接口 ...

  3. 2021最新 python爬取12306列车信息自动抢票并自动识别验证码(三)购票篇

    项目前言 tiebanggg又来更新了,项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时间进行删除:切忌用于一切非法途径,否则后果自行 ...

  4. Python搭建代理池爬取拉勾网招聘信息

    先来看一张图了解下爬虫 实现功能 多线程爬取拉勾网招聘信息 维护代理 ip 池 搭建 node 服务器 Taro 使用 echarts 做数据分析 1.多线程爬取拉勾网招聘信息 Tip:涉及知识 1. ...

  5. 爬取游戏优惠信息,并且将结果发送到邮箱

    需求分析 昨天,我制作了爬取游戏优惠信息的程序,很快啊,一个朋友私信我说,你这个没用.这个话好像很耳熟啊,前两天就有朋友说我这个没用,主要因为是当时爬到的内容是外文的,看不懂,现在这个问题已经解决了, ...

  6. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

  7. java爬虫拉勾网_[Java教程]node.js爬虫爬取拉勾网职位信息

    [Java教程]node.js爬虫爬取拉勾网职位信息 0 2017-03-14 00:00:21 简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳 ...

  8. Github API:爬取Github用户数据

    Github API:爬取Github用户数据 引言 目标:根据给定的论文中中文作者的英文名字(实际上就是拼音),从Github上获取用户邮箱信息. 一.Github API介绍 详细的开发者文档 想 ...

  9. 爬取GitHub开源项目

    分析可能出现的问题: GitHub检测到爬虫,对你的IP进行封禁 请求超时处理 单线程爬取速度太慢 采用的方法: 在进行爬虫的时候使用代理 模拟用户获取信息,设置访问的headers 设置随机UA,模 ...

最新文章

  1. 【原创+整理】简述何为调用约定,函数导出名以及extern C
  2. 安装autoit libary失败问题解决
  3. 6.成本会计理论的U9系统实现(下)
  4. 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...
  5. deebot扫地机器人怎么清洁_智能清洁小助手开始工作 360扫地机器人S7评测
  6. maven nexus 私服的搭建学习
  7. 线性汇编总结和函数说明
  8. 使用jQuery操作DOM元素
  9. 从零开始的LaTex生活
  10. 【laravel5.4】使用baum\node 类库实现无限极分类
  11. draw9patch超详细教程【转】
  12. Git学习笔记(2)——版本的回退,和暂存区的理解
  13. django settings 定义的变量不存在_【Django】第一期|初识Django以及基本安装方法和配置...
  14. jquery html app,jquery .html()vs .append()
  15. dubbo源码编译(顶)
  16. 计算机固态加机械硬盘,固态硬盘和机械硬盘怎么混合使用
  17. 费马小定理的归纳法证明和应用
  18. 2017-4-18 CCCC决赛总结
  19. ATF:Gicv源码文件系列-gicv2.mk
  20. rtsp流php播放插件,nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器

热门文章

  1. jedate日期控件的图标乱码
  2. Hssfworkbook 设置单元格格式 setdataformat
  3. java 爬取网页数据 多页爬取 jsoup 和 httpClient 实现
  4. CSS 选择器的种类有哪些?怎么用?
  5. 来自沙特阿拉伯的新国家航空公司--利雅得航空公司首次亮相
  6. Git non fast foward
  7. dirmap Use crawl mode 报错
  8. 云计算入门——IT架构九重天
  9. unity中时间函数
  10. Android 接入GVoice语音 常见问题