数据可视化:使用API
来源:《Python编程:从入门到实践》
文章目录
1 使用Web API
- Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互——这种请求称为API调用
- 请求的数据将以易于处理的格式(JSON/CSV)返回
- 依赖于外部数据源的大多数应用程序都依赖于API调用
1.1 Git 和 GitHub
- 这里将使用GitHub的API来请求有关该网站中Python项目的信息,然后使用Pygal生成交互式可视化,以呈现这些项目的受欢迎程度
- GitHub(https://github.com)的名字源自Git,Git是一个分布式版本控制系统,让程序员团队能够协作开发项目
- 对于喜欢的项目,GitHub用户可给它加星(star)以表示支持,用户还可跟踪他可能想使用的项目
- 本章将编写一个程序,它自动下载GitHub上星际最高的Python项目的信息,并对这些信息进行可视化
1.2 使用API调用请求数据
- GitHub的API让你能够通过API调用来请求各种信息
- 要知道API调用是什么样的,可访问https://api.github.com/search/repositories?q=language:python&sort=stars
- 这个调用返回GitHub当前托管了多少个Python项目,还有有关最受欢迎的Python仓库的信息
- 下面来仔细研究这个调用:
- 第一部分(https://api.github.com/)将请求发送到GitHub网站中响应API调用的部分
- 接下来(search/repositories)让API搜索GitHub上的所有仓库
- repositories后面的问号指出我们要传递一个实参
- q表示查询,q= 让我们能够开始指定查询
- language:python指出只想获取主要语言为Python的仓库的信息
- sort=stars指定将项目按其获得的星级进行排序
- 下面是响应的前几行。从响应可知,该URL并不适合人工输入
{
"total_count": 4149745,
"incomplete_results": false,
"items": [
{
"id": 21289110,
"node_id": "MDEwOlJlcG9zaXRvcnkyMTI4OTExMA==",
"name": "awesome-python",
"full_name": "vinta/awesome-python",
--snip--
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 从第二行输出可知,当前GitHub总共有4149745个Python项目
- “incomplete_results”: false,据此可知请求是成功的(如果无法全面处理该API,将返回true)
- "items"其中包含GitHub上最受欢迎的Python项目的详细信息
1.3 安装requests
- requests包让Python程序能够轻松地向网站请求信息以及检查返回的响应
- 安装requests,执行下面的命令
$ pip install --user requests
- 1
1.4 处理API响应
- 下面来编写一个程序,它执行API调用并处理结果,找出GitHub上星级最高的Python项目
python_repos.py
import requests
# 执行API调用并存储响应
url = ‘https://api.github.com/search/repositories?q=language:python&sort=stars’
r = requests.get(url)
print(“Status code:”, r.status_code)
# 将API响应存储在一个变量中
response_dict = r.json()
# 处理结果
print(response_dict.keys())
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 导入
模块requests
- url存储API调用的URL,然后使用requests执行调用
调用get()并将URL传递给它,再将响应对象存储在变量r中
- 响应对象包含一个名为status_code的属性,它告诉我们请求是否成功了(
状态码200表示请求成功
) - 这个API返回JSON格式的信息,因此使用
方法json()将这些信息转换为一个Python字典
- 将得到的字典
存储在response_dict中
- 看输出,知道了请求成功了,且响应字典包含三个键:‘total_count’, ‘incomplete_results’, ‘items’
1.5 处理响应字典
- 下面来生成一些概述这些信息的输出
python_repos.py
import requests
# 执行API调用并存储响应
url = ‘https://api.github.com/search/repositories?q=language:python&sort=stars’
r = requests.get(url)
print(“Status code:”, r.status_code)
# 将API响应存储在一个变量中
response_dict = r.json()
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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 首先打印了与
total_count
关联的值,它指出当前GitHub总共包含多少个Python仓库 - 与’items’相关联的值是一个列表,其中包含很多字典,每个字典包含有关一个Python仓库的信息
- 通过仔细查看这些键,可大致知道可提取有关项目的哪些信息
- 下面来提取repo_dict与一些键相关联的值:
python_repos.py
--snip--
# 探索有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
# 研究第一个仓库
repo_dict = repo_dicts[0]
print("\nSelected information about first repository:")
print(‘Name:’, repo_dict[‘name’])
print(‘Owner:’, repo_dict[‘owner’][‘login’])
print(‘Stars:’, repo_dict[‘stargazers_count’])
print(‘Repository:’, repo_dict[‘html_url’])
print(‘Created:’, repo_dict[‘created_at’])
print(‘Updated:’, repo_dict[‘updated_at’])
print(‘Description:’, repo_dict[‘description’])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
1.6 概述最受欢迎的仓库
- 下面编写一个循环,打印API调用返回的每个仓库的特定信息,以便在可视化中包含所有这些信息:
python_repos.py
--snip--
# 探索有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
print("\nSelected information about each repository:")
for repo_dict in repo_dicts:
print(’\nName:’, repo_dict[‘name’])
print(‘Owner:’, repo_dict[‘owner’][‘login’])
print(‘Stars:’, repo_dict[‘stargazers_count’])
print(‘Repository:’, repo_dict[‘html_url’])
print(‘Description:’, repo_dict[‘description’])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 打印每个项目的名称、所有者、星级、在GitHub上的URL及描述:
1.7 监视API的速率限制
- 大多数API都存在速率限制,即你在特定时间内可执行的请求数存在限制
- 要获悉你是否接近了GitHub的限制,可在浏览器中输入:https://api.github.com/rate_limit
{
"resources": {
"core": {
"limit": 60,
"remaining": 60,
"reset": 1566879699
},
"search": {
"limit": 10,
"remaining": 10,
"reset": 1566876159
},
"graphql": {
"limit": 0,
"remaining": 0,
"reset": 1566879699
},
"integration_manifest": {
"limit": 5000,
"remaining": 5000,
"reset": 1566879699
}
},
"rate": {
"limit": 60,
"remaining": 60,
"reset": 1566879699
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 从上面可知,极限为每分组10个请求
- reset值指的是配额将重置的Unix时间或新纪元时间(1970年1月1日午夜后多少秒)
- 用完配额后,你将收到一条简单的响应,由此知道已达到API极限
- 达到极限后,必须等待配额重置
注意: 很多API都要求你注册获得API**后才能执行API调用
来源:《Python编程:从入门到实践》
文章目录
1 使用Web API
- Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互——这种请求称为API调用
- 请求的数据将以易于处理的格式(JSON/CSV)返回
- 依赖于外部数据源的大多数应用程序都依赖于API调用
1.1 Git 和 GitHub
- 这里将使用GitHub的API来请求有关该网站中Python项目的信息,然后使用Pygal生成交互式可视化,以呈现这些项目的受欢迎程度
- GitHub(https://github.com)的名字源自Git,Git是一个分布式版本控制系统,让程序员团队能够协作开发项目
- 对于喜欢的项目,GitHub用户可给它加星(star)以表示支持,用户还可跟踪他可能想使用的项目
- 本章将编写一个程序,它自动下载GitHub上星际最高的Python项目的信息,并对这些信息进行可视化
1.2 使用API调用请求数据
- GitHub的API让你能够通过API调用来请求各种信息
- 要知道API调用是什么样的,可访问https://api.github.com/search/repositories?q=language:python&sort=stars
- 这个调用返回GitHub当前托管了多少个Python项目,还有有关最受欢迎的Python仓库的信息
- 下面来仔细研究这个调用:
- 第一部分(https://api.github.com/)将请求发送到GitHub网站中响应API调用的部分
- 接下来(search/repositories)让API搜索GitHub上的所有仓库
- repositories后面的问号指出我们要传递一个实参
- q表示查询,q= 让我们能够开始指定查询
- language:python指出只想获取主要语言为Python的仓库的信息
- sort=stars指定将项目按其获得的星级进行排序
- 下面是响应的前几行。从响应可知,该URL并不适合人工输入
{
"total_count": 4149745,
"incomplete_results": false,
"items": [
{
"id": 21289110,
"node_id": "MDEwOlJlcG9zaXRvcnkyMTI4OTExMA==",
"name": "awesome-python",
"full_name": "vinta/awesome-python",
--snip--
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 从第二行输出可知,当前GitHub总共有4149745个Python项目
- “incomplete_results”: false,据此可知请求是成功的(如果无法全面处理该API,将返回true)
- "items"其中包含GitHub上最受欢迎的Python项目的详细信息
1.3 安装requests
- requests包让Python程序能够轻松地向网站请求信息以及检查返回的响应
- 安装requests,执行下面的命令
$ pip install --user requests
- 1
1.4 处理API响应
- 下面来编写一个程序,它执行API调用并处理结果,找出GitHub上星级最高的Python项目
python_repos.py
import requests
推荐阅读
-
Python数据可视化之画图
-
Oracle数据库密码文件的使用与维护
-
《ServerSuperIO Designer IDE使用教程》-2.与硬件网关数据交互,并进行数据级联转发,直到云端。发布:v4.2.1版本
-
使用POI导出百万级数据到excel的解决方案
-
ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介
-
利用Python绘制MySQL数据图实现数据可视化
-
浪潮司库大数据可视化分析平台,为企业打造资金管理“千里眼”
-
yii框架表单模型使用及以数组形式提交表单数据示例
-
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
-
vue axios数据请求及vue中使用axios的方法