使用github的API
github自己有API,如果自己写的爬虫没有特色或者没有很高的效率,不如使用API,数据获取可以来得快一些。github不像社交网站那样拥有大量用户和内容,所以数据规模相对小一点,使用API也相对便捷一些。
使用github的API
没有token的情况下,只有60次访问,而且有的IP直接被限制。除此之外,有一些API在访问的时候必须要认证的参数,所以还是进行认证好一些。官方API文档有详细的功能说明。
支持的验证访问方式有如下几种:使用token;使用auth认证。使用token简单一点。
对于生成的token还有访问权限范围的设置,避免滥用token。这是纯粹是为了开发,如果只是简单的获取点信息,没有什么设置的必要,可以全部关闭。
生成一个github的token
在主页设置——开发者设置下面,生成一个token。中间让你选择这个token 的作用域,如果只是访问官方的API,就不需要选择任何东西。
使用API之后,就可以拥有每小时5000次的请求。单线程在国内对github进行请求,受限于速度,很难做到每小时爬完5000次。多线程更不推荐,请求太多,github自身访问也不稳定,程序挂得很快。
下面是一个可以查看自己的剩余的次数的地址:
https://api.github.com/rate_limit?access_token=YOUR_TOKEN
如何遍历
github的API用起来很方便,通过修改GET请求参数中的page=的数字,就可以切换不同页面。序号从1开始,响应包的响应头link字段中会有上一个和下一个地址等信息,一般只用到下一个。结束的条件就是没有link字段不再有next相关的信息。遍历非常容易。
如果咋遍历用户的某些信息之前,曾经获取过用户粉丝或者关注者总数量的操作,可按照每页的数量(通常是30个)做计算得到最大的页数,然后进行遍历,可以替代每次检查响应头的办法。
常用的地址
用户资料:
https://api.github.com/users/B1u3Buf4
用户粉丝:
https://api.github.com/users/B1u3Buf4/followers
用户关注:
https://api.github.com/users/B1u3Buf4/following
用户仓库:
https://api.github.com/users/B1u3Buf4/repos
用户星赞:
https://api.github.com/users/B1u3Buf4/starred
申请token
首先登陆github,右上角点击头像,选择settings。
左侧选择Developer settings,之后会跳到下一个界面。
切换到personal access tokens,然后选择Generate new token生成新的token。接下来勾选token的权限,如果只是获取信息,建议什么权限都不要勾选。如果有开发需求,遵循权限最小原则进行勾选。之后命名一个有意义的名字,token就取到了。
注意的问题
明明在返回的json中看到一个用户的主页URL,但是通过API请求访问不到。
通常这种情况下服务器会返回404,注意检查一下状态码跳过这个用户。个别访问不到的也没有404,同样采取跳过。
使用github的API相关推荐
- GitHub Checks API帮助应用实现进一步的持续集成
\ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ GitHub Checks API意在实现向持续集成工作流中添加代码检查,诸如对源代码文件做 ...
- GSoC: GitHub Checks API 项目第一阶段总结
这篇博客将介绍 GSoC 项目 GitHub Checks API Plugin 在一阶段的相关进展. 简单来说,GitHub Checks API 就是一套可高度定制化接受 CI 报告的接口.CI ...
- GSoC: GitHub Checks API 项目第三阶段总结
这篇文章将介绍 GitHub Checks API 项目在谷歌编程之夏第三阶段的相关工作. 在这个夏天的尾声,GitHub Checks API 项目迎来了它在 GSoC 的最后一段旅程.在这篇文章当 ...
- 爬取Github Web API 并存入Mysql数据库
写在前面 本文内容为爬取GitHub的Web API并存入mysql数据库,内容为华为鸿蒙OS相关的代码. WEB API Web API是网络应用程序接口.它包含了广泛的功能,网络应用通过API接口 ...
- python github api_用python写一个GitHub Trending Api
GitHub 给了开发者相当丰富的 API 接口 https://developer.github.com/v3/,包括认证,搜索,活动等接口,但就是没有提供获取 Trending 的接口.因此,需要 ...
- 用 Go 实现一个 GitHub Trending API
背景 上一篇文章Go 每日一库之 bubbletea我们介绍了炫酷的 TUI 程序框架 - bubbletea.最后实现了一个拉取 GitHub Trending 仓库,并显示在控制台的程序.由于 G ...
- 用爬虫写一个 GitHub Trending API
这学期打算做一个关于 GitHub 的 Android 应用,其中一个模块就是查看 GitHub 当天,当周,当月的热门项目和开发者.其实 GitHub 给了开发者相当丰富的 API 接口 devel ...
- Github Emojis API
100: "https://assets-cdn.github.com/images/icons/emoji/unicode/1f4af.png?v8", 1234: " ...
- 使用经过oauth验证后的github API,避免调用频次超标的问题
今天我打算开发一个小工具,使用github Restful API获取我一个仓库里的所有issues: https://api.github.com/repos/i042416/KnowlegeRep ...
最新文章
- JAVA网络IO编程
- windows服务守护进程bat脚本、windows窗体守护进程bat脚本
- mysql 存储过程 插入记录_mysql 存储过程 插入记录
- postman+newman生成html报告
- 163邮箱有传真服务器,网易企业邮箱邮件传真功能使用说明
- Linux每个目录的介绍
- python怎么控制小数点位数_谈谈关于Python里面小数点精度控制的问题
- 干货:解码OneData,阿里的数仓之路。
- Dart云平台-DartPad
- 开课吧Java课堂:特殊的字符串如何操作,字符串如何连接
- ubuntu 开启dhcp服务并配置
- SpringBoot(十六)_springboot整合JasperReport6.6.0
- 计算机 仿真 流体力学剪切应力,基于人体血管B型主动脉夹层三维建模及血流动力学仿真研究...
- 家中买的计算机配置,配置,教您买电脑主要看哪些配置
- malloc,calloc区别
- 基于OBD系统的量产车评估测试(PVE)
- linux 硬盘错误,linux – 硬盘读取错误……停止?
- PMP讲义第二章 项目运行环境
- rio隐藏的团队列表
- 《Java入门从笨鸟到菜鸟》读后感(三)