如何合法爬取 Github 的信息?
前段时间因为工作需要,需要抓取 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 的信息?相关推荐
- 利用Python爬取github上commits信息
爬取github上commits在1200次以上的用户及commits分布情况 简介 准备 抓取用户个人页面 获取commits信息 打印符合条件用户最近一周commits信息 反爬虫问题 总结 简介 ...
- 爬取Github Web API 并存入Mysql数据库
写在前面 本文内容为爬取GitHub的Web API并存入mysql数据库,内容为华为鸿蒙OS相关的代码. WEB API Web API是网络应用程序接口.它包含了广泛的功能,网络应用通过API接口 ...
- 2021最新 python爬取12306列车信息自动抢票并自动识别验证码(三)购票篇
项目前言 tiebanggg又来更新了,项目--[12306-tiebanggg-master]注:本项目仅供学习研究,如若侵犯到贵公司权益请联系我第一时间进行删除:切忌用于一切非法途径,否则后果自行 ...
- Python搭建代理池爬取拉勾网招聘信息
先来看一张图了解下爬虫 实现功能 多线程爬取拉勾网招聘信息 维护代理 ip 池 搭建 node 服务器 Taro 使用 echarts 做数据分析 1.多线程爬取拉勾网招聘信息 Tip:涉及知识 1. ...
- 爬取游戏优惠信息,并且将结果发送到邮箱
需求分析 昨天,我制作了爬取游戏优惠信息的程序,很快啊,一个朋友私信我说,你这个没用.这个话好像很耳熟啊,前两天就有朋友说我这个没用,主要因为是当时爬到的内容是外文的,看不懂,现在这个问题已经解决了, ...
- [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )
上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...
- java爬虫拉勾网_[Java教程]node.js爬虫爬取拉勾网职位信息
[Java教程]node.js爬虫爬取拉勾网职位信息 0 2017-03-14 00:00:21 简介 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招聘信息,共爬取了北京.上海.广州.深圳 ...
- Github API:爬取Github用户数据
Github API:爬取Github用户数据 引言 目标:根据给定的论文中中文作者的英文名字(实际上就是拼音),从Github上获取用户邮箱信息. 一.Github API介绍 详细的开发者文档 想 ...
- 爬取GitHub开源项目
分析可能出现的问题: GitHub检测到爬虫,对你的IP进行封禁 请求超时处理 单线程爬取速度太慢 采用的方法: 在进行爬虫的时候使用代理 模拟用户获取信息,设置访问的headers 设置随机UA,模 ...
最新文章
- 【原创+整理】简述何为调用约定,函数导出名以及extern C
- 安装autoit libary失败问题解决
- 6.成本会计理论的U9系统实现(下)
- 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...
- deebot扫地机器人怎么清洁_智能清洁小助手开始工作 360扫地机器人S7评测
- maven nexus 私服的搭建学习
- 线性汇编总结和函数说明
- 使用jQuery操作DOM元素
- 从零开始的LaTex生活
- 【laravel5.4】使用baum\node 类库实现无限极分类
- draw9patch超详细教程【转】
- Git学习笔记(2)——版本的回退,和暂存区的理解
- django settings 定义的变量不存在_【Django】第一期|初识Django以及基本安装方法和配置...
- jquery html app,jquery .html()vs .append()
- dubbo源码编译(顶)
- 计算机固态加机械硬盘,固态硬盘和机械硬盘怎么混合使用
- 费马小定理的归纳法证明和应用
- 2017-4-18 CCCC决赛总结
- ATF:Gicv源码文件系列-gicv2.mk
- rtsp流php播放插件,nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器