Github API:爬取Github用户数据

时间:2024-03-22 13:30:58

Github API:爬取Github用户数据

引言

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

一、Github API介绍

  • 详细的开发者文档

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

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

 

  • Github 提供的教科书般的API

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

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

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

·        Github API:爬取Github用户数据

    • 用户+密码认证方式
    • 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。在程序中没有办法得到邮箱。

Github API:爬取Github用户数据

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

 Github API:爬取Github用户数据

程序中的返回结果:

Github API:爬取Github用户数据