Github API:爬取Github用户数据

引言

目标:根据给定的论文中中文作者的英文名字(实际上就是拼音),从Github上获取用户邮箱信息。

一、Github API介绍

  • 详细的开发者文档

想了解相关参数设置和可爬取的数据,可阅读GithubDeveloper Guide。这份开发详细地介绍了爬取数据过程中所需要的接口和参数设置的方式。其中我们使用Search → Users中介绍的使用方法。

  • Github 提供的教科书般的API

Github为开发者们提供了结构非常清晰的API接口信息。通过这写API可以从Github上爬取你想要的数据。

二、爬取数据时的Token验证方式

Github提供了多种用户认证方式。官网具体描述:https://developer.github.com/v3/auth/

·        

  • 用户+密码认证方式
  • token的认证方式

其中用户名加密码的用户方式不是很安全,需要将登录的用户名和密码暴露在代码中。所以一般采取Token的认证方式比较多。其中token是在Github官网上生成的。settings → Developersettings → Personal access tokens → Generate new token。

在构造Request请求的时候,在Headers中加入用户认证字段。

headers: {
'User-Agent':'Mozilla/5.0',
'Authorization':'token 78e380f2e6d1a4b8239d9c3baea026b6d248fe14',
'Content-Type':'application/json',
'method':'GET',
'Accept':'application/json'
}

其中需要注意的两件事:

  • Authorization字段的Value是'token 78e380f2e6d1a4b8239d9c3baea026b6d248fe14',而不是'78e380f2e6d1a4b8239d9c3baea026b6d248fe14',一定要加上token前缀。

·       构造herders时,一定要指定User-Agent字段,否则会一直返回403  forbidden。

三、 问题总结

  • 根据用户的全名进行搜索,q后面指定的是查询条件,根据fullname进行查询,构造q=fullname:Ruan YiFeng的查询条件。搜索的地址为:https://api.github.com/search/users?q=fullname:Ruan Yifeng,返回的大多是和这个用户相关的URL接口。其中的“URL”字段存储的是用户的个人信息。我们可以看出这里面还包含了其他的用户数据,比如followers_url,following_url,repos_url 等这些我们可以用来分析用户关系,用户资料库等。
  • 这个地方需要注意的是:虽然用户的html_url显示的时候也包含用户的邮箱,但是这个似乎有反爬虫机制,爬取下来用cheerio解析的时候,会提示sing in to view email。在程序中没有办法得到邮箱。

  • 使用上面获取到的url地址https://api.github.com/users/ruanyf,在程序中request这个地址,就可以拿到用户的email,且有真实的值。不过这个地址如果在页面上直接访问email就会直接显示为null。

程序中的返回结果:

Github API:爬取Github用户数据相关推荐

  1. python调用百度地图API爬取西安市POI数据

    任务前提 做该项目之前,首先得有基础知识: 编程语言:python 编译工具:PyCharm 网络爬虫相关知识,xpath库,numpy,pandas等库. 任务准备: 去百度地图开放平台申请密匙:h ...

  2. java爬取页面数据报错401,JAVA自动爬取CSDN用户数据并文章点赞

    爬取用户 某天,我发现我的文章被某个用户点赞了.欣喜之下,把那边文章重新校核更改一遍,接着进入这个点赞我的用户看看,结果发现他近期的博客是一些爬虫的实战.我想,我那篇文章,应该是他做的一个小程序批量加 ...

  3. 如何用python爬取数据_如何使用python爬取知乎数据并做简单分析

    原标题:如何使用python爬取知乎数据并做简单分析 一.使用的技术栈: 爬虫:python27 +requests+json+bs4+time 分析工具: ELK套件 开发工具:pycharm 数据 ...

  4. Python,网络爬虫selenium与pyautogui抓取新浪微博用户数据

    Python,网络爬虫selenium与pyautogui抓取新浪微博用户数据 不需要登陆新浪微博账户,直接运行就可以通过python爬虫爬取新浪微博用户数据.本例selenium与pyautogui ...

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

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

  6. 简单撸了个 GitHub trending 爬取 API

    最近逛 G 站发现了一个优雅的 PHP 爬虫采集工具 QueryList,出于练习,顺手写了一个 Github trending 爬取 API,使用最新的 Lumen 8 实现,已部署到了Heroku ...

  7. Scrapy爬取新浪微博用户粉丝数据

    一般来说pc端的信息是最为全面的,但是防范措施也是最严格的.所以不能走weibo.com这个域名下进行爬取,新浪微博在pc端的反扒措施较为全面.而手机端的数据则相对好爬取,而且数据都是Json格式,解 ...

  8. python 爬取直播弹幕视频_调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容)...

    调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容) 查看<斗鱼弹幕服务器第三方接入协议v1.4.1>,了解斗鱼API的使用方法,即如何连接斗鱼弹幕服务器.维持连接及获取弹幕信息 Pyt ...

  9. 爬取GitHub开源项目

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

最新文章

  1. Jetty:配置概览-怎么配置Jetty
  2. #if、#ifdef、#if defined之间的区别【转】
  3. Redis cluster不能发布在与 springboot 相同的物理磁盘上,否则找不到集群。
  4. STL的算法补充笔记-1
  5. ★大脑的9大未解之谜
  6. GitHub资源学习的网址(未完待续)
  7. [HNOI2016]树
  8. apqp过程流程图范本_过程流程图(APQP要求)
  9. 多种方法使用c语言读写文件(总结)
  10. Arduino - MPU6050陀螺仪三轴加速度倾角传感器
  11. 幂等矩阵(Idempotent matrix)
  12. 全栈开发-IDE介绍与设置、字符串格式化、数据类型、for循环
  13. sqlite 中函数--nullif()、ifnull()、strftime()及时间格式函数
  14. 优化华为云服务器采用Key登陆
  15. sqlite常用语句
  16. 论文阅读:A Novel Graph based Trajectory Predictor with Pseudo Oracle
  17. 阿里云网站备案简单流程说明文档
  18. 提车二月记--小鹏P7
  19. 计算机专业毕业答辩问代码吗,计算机专业毕业论文答辩技巧
  20. FBA 街机游戏安卓盒子,游戏盒子实现双人对打,四人对打方案

热门文章

  1. 微信小程序JS编写一元三次方程盛金公式解法代码片段
  2. consoles打印数据库字段
  3. 【张小平工作日志】DBCP、c3p0、Druid、Proxool数据库连接池比较
  4. (65)-- 爬取58交友信息
  5. 深度卷积神经网络在目标检测中的进展
  6. 墨天轮访谈 | 华为云温云博:从客户视角出发,GaussDB(for Redis)究竟“香”在哪里?
  7. 关于在Linux下无法查看caj文档的解决方案
  8. 命令与征服:绝命时刻
  9. 智能照明系统优势与特点
  10. 第十三次ScrumMeeting博客