当前位置:   article > 正文

用Github的Api发现stars最多开源项目_github api查询star数量最多的仓库

github api查询star数量最多的仓库

Github的API无需注册,在网上可以查到使用信息和一些限制:

这里写图片描述
查询的请求为每分钟10次
此次用到的api格式如下:

url = ‘https://api.github.com/search/repositories?q=language:python&sort=stars
/search/repositories 搜索github上的仓库
?传递一个查询参数q,=指定查询的内容language:python,查询语言为python的仓库信息
&sort=stars项目按照获得的星星数量排名

倒入用到的库

import requests
  • 1
# 获取最受欢迎的前30个仓库的信息,返回对象为一个字典对象
def get_info(language):
    url = 'https://api.github.com/search/repositories?q=language:%s&sort=stars'%(language)
    r = requests.get(url)
    if r.status_code == 200:
        print 'success'
    return r.json()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
# 获取python,java,C++三种语言最受欢迎的库
response_python = get_info('python')
response_java   = get_info('java')
response_c_dplus = get_info('C++')
  • 1
  • 2
  • 3
  • 4
success
success
success
  • 1
  • 2
  • 3

获取信息函数返回字典对象的键值

print (response_python.keys())
  • 1
[u’total_count’, u’items’, u’incomplete_results’]
response_java['total_count']    # github上java语言仓库的数量
  • 1
3453199
response_python['items'][0].keys()  # item包含仓库的一些详细信息的列表
  • 1
[u'issues_url',
 u'deployments_url',
 u'stargazers_count',
 u'forks_url',
 u'mirror_url',
 u'subscription_url',
 u'notifications_url',
 u'collaborators_url',
  ........
 u'watchers',
 u'name',
 u'language',
 u'url',
 u'created_at',
 u'pushed_at',
 u'forks_count',
 u'default_branch',
 u'teams_url',
 u'trees_url',
 u'branches_url',
 u'subscribers_url',
 u'stargazers_url']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

incomplete_results,在执行更复杂的Api调用是,需要检查它的结果.简单的调用可以忽略
对字典对象进行处理,生成一个DataFrame对象

# 返回一个dataframe对象
import pandas as pd
def ret_df(response_dict):
    df = pd.DataFrame(columns=['created_at','updated_at','name','forks' ,'stars','size'])
    for resp_dict in response_dict['items']:
        df = df.append({
            'created_at':resp_dict['created_at'],
            'updated_at':resp_dict['updated_at'],
            'name':resp_dict['name'],
            'forks':resp_dict['forks'],
            'stars':resp_dict['stargazers_count'],
            'size':resp_dict['size']},ignore_index=True)
    return df
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  Python语言前5个最受欢迎的仓库
 
created_atupdated_atnameforksstarssize
02014-06-27T21:00:06Z2017-08-04T04:06:23Zawesome-python6999370003198
12012-02-25T12:39:13Z2017-08-04T03:42:53Zhttpie2069308403657
22015-04-08T15:08:04Z2017-08-04T04:44:20Zthefuck1476293631914
32010-04-06T11:11:59Z2017-08-04T03:55:18Zflask9091287594929
42010-10-31T14:35:07Z2017-08-03T23:17:48Zyoutube-dl52812792048358

可视化仓库

# pygal对仓库信息进行可视化
import pygal
  • 1
  • 2
# 生成数据
df_python = ret_df(response_python)
df_java = ret_df(response_java)
df_c_dplus = ret_df(response_c_dplus)
  • 1
  • 2
  • 3
  • 4

每个仓库的stars和forks

def show(df, language):
    line_chart = pygal.Line(x_label_rotation=45)
    line_chart.title = 'Most-Starred %s projects on Github'%language
    line_chart.x_labels = df['name']
    line_chart.add('forks',df['forks'])
    line_chart.add('stars',df['stars'])
    line_chart.render_to_file(language+'_projects.svg')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
show(df_c_dplus, 'C++')
  • 1

这里写图片描述
这里写图片描述
这里写图片描述
不同语言的比较

# 不同语言比较
from pygal.style import TurquoiseStyle

def compare_show(df_py,df_j,df_c, colu):
    chart = pygal.Bar()
    chart.title = 'Compare different language'
    chart.x_labels = range(1,31)       # 项目星星排名
    chart.add('Python', df_py[colu])
    chart.add('Java', df_j[colu])
    chart.add('C++', df_c[colu])
    chart.render_to_file(colu+'.svg')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
compare_show(df_python, df_java, df_c_dplus, 'stars')
  • 1

这里写图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/201423
推荐阅读
相关标签
  

闽ICP备14008679号