GitHub(https://github.com/)是一个面向开源及私有软件项目的托管平台。GitHub上的项目都存储在仓库中,包含与项目相关联的一切:代码,项目参与者的信息,问题和bug报告等等。对于喜欢的项目,GitHub用户能够给它加星(star)以表示支持,用户还能够跟踪他可能想使用的项目。html
先看看这个网址https://api.github.com/search/repositories?q=language:python&sort=starspython
这个调用返回GitHub当前托管了多少个Python项目,还有最受欢迎的Python仓库信息,下面来仔细研究这个调用。
https://api.github.com/:将请求发送到GitHub网站中响应API调用的部分
search/repositories:让API搜素GitHub是上的全部仓库
repositories后面的?:指出要传递一个实参
q=:指定查询
language:python:获取主要语言为Python的仓库的信息
&sort=stars:指定项目按照其得到的星级进行排序git
搜索结果如图
total_count:总共有多少项目
incomplete_results:不完整的结果=false 代表请求是成功的
items:包含GitHub上最受欢迎的Python项目的信息github
接下来,咱们将编写一个程序,它将自动下载GitHub上星级最高的Python项目信息。web
# coding = utf-8 import requests # 执行api调用并存储响应 url = 'https://api.github.com/search/repositories?q=language:python&sort=stars' r = requests.get(url) # r.status_code属性:状态码为200表示请求成功 print("Status code:", r.status_code) # 将api响应存储在一个变量中(这个api返回json格式的信息,所以咱们使用方法json()将这些信息转换为python字典) response_dict = r.json() # 打印与'total_count'相关联的值,指出GitHub总共包含了多少个Python仓库 print("Total repositories:", response_dict['total_count']) # 探索有关仓库的信息 repo_dicts = response_dict['items'] print("Repositories returned:", len(repo_dicts)) """研究第一个仓库""" repo_dict = repo_dicts[0] # 打印这个字典的键数,看看其中有多少信息 print("\nKeys:", len(repo_dict)) # #打印这个字典的全部键,看看其中有哪些信息 # for key in sorted(repo_dict.keys()): # print(key) # 表示第一个仓库的字典中与不少键相关联的值 print("\nSelected information about first repository:") # 打印项目的名称 print('Name:', repo_dict['name']) # 项目全部者是用一个字典来表示的,所以咱们使用键owner来访问表示全部者的字典,再使用键key来获取全部者的登陆名 print("Owner:", repo_dict['owner']['login']) # 打印得到了多少个星的评级 print("Stars:", repo_dict['stargazers_count']) #打印项目再GitHub仓库的URL print("Reponsitory:",repo_dict['html_url']) #显示项目的建立时间 print("Created:", repo_dict['created_at']) #显示项目最后一次更新的时间 print("Updated:", repo_dict['updated_at']) #打印仓库的描述 print("Description:",repo_dict['description'])
运行结果
编程
# coding = utf-8 import requests # 执行api调用并存储响应 url = 'https://api.github.com/search/repositories?q=language:python&sort=stars' r = requests.get(url) # r.status_code属性:状态码为200表示请求成功 print("Status code:", r.status_code) # 将api响应存储在一个变量中(这个api返回json格式的信息,所以咱们使用方法json()将这些信息转换为python字典) response_dict = r.json() # 打印与'total_count'相关联的值,指出GitHub总共包含了多少个Python仓库 print("Total repositories:", response_dict['total_count']) # 探索有关仓库的信息 repo_dicts = response_dict['items'] print("Repositories returned:", len(repo_dicts)) """研究第一个仓库""" repo_dict = repo_dicts[0] # 打印这个字典的键数,看看其中有多少信息 print("\nKeys:", len(repo_dict)) # #打印这个字典的全部键,看看其中有哪些信息 # for key in sorted(repo_dict.keys()): # print(key) # 表示第一个仓库的字典中与不少键相关联的值 print("\nSelected information about first repository:") for repo_dict in repo_dicts: # 打印项目的名称 print('Name:', repo_dict['name']) # 项目全部者是用一个字典来表示的,所以咱们使用键owner来访问表示全部者的字典,再使用键key来获取全部者的登陆名 print("Owner:", repo_dict['owner']['login']) # 打印得到了多少个星的评级 print("Stars:", repo_dict['stargazers_count']) # 打印项目再GitHub仓库的URL print("Reponsitory:", repo_dict['html_url']) # 打印仓库的描述 print("Description:", repo_dict['description'])
运行结果
json
大多数API都存在速率限制,要获悉你是否接近了GitHub的限制,在浏览器中输入https://api.github.com/rate_limit,也能够直接点击此处即可以获得速率限制信息api
{"resources": {"core": {"limit": 60, "remaining": 60, "reset": 1598258938}, "graphql": {"limit": 0, "remaining": 0, "reset": 1598258938}, "integration_manifest": {"limit": 5000, "remaining": 5000, "reset": 1598258938}, "search": {"limit": 10, "remaining": 10, "reset": 1598255398}}, "rate": {"limit": 60, "remaining": 60, "reset": 1598258938}}
如图可知,极限为每分钟处理10个请求,而在这一分钟内,咱们还能够执行10个请求,reset值指的是配额将重置的Unix时间或新纪元时间(1970年1月1日午夜后多少秒)。用完配额后,你将收到一条简单的响应,由此知道API已到达极限。到达极限后,你必须等待配额重置浏览器
注意:不少API都须要你注册得到API密匙后才能执行API调用。
学《python编程从入门到实战》17章第一节。
以上就是所有内容啦,若是有不懂的小伙伴欢迎提出来傲!咱一块儿解决svg