1. 使用WEB API

1.1 使用API调用请求数据

https://api.github.com/search/repositories?q=language:python&sort=stars

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TvWGgC8-1609325517381)(F4BACDF3A24F44B0B39009BEF86A44A8)]

1.2. 安装 resuests

1.3.处理API响应

python_repos.py

'''
--coding utf-8--
created on Dec 28,2020

python crash course
'''

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)
#需要判断当前网页对于我们的请求是否有响应 ,比如200代表服务器正常响应, 404代表页面未找到

#讲API响应存储在一个变量中
#API返回JSON格式,使用方法json() 将这些信息转换为Python字典
response_dict=r.json()

#处理结果
print(response_dict.keys())

结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9tO3GR0-1609325517383)(A1BCB196AC7D41229ABE9456137691C7)]

1.4.处理响应字典

将API调用返回的信息存储到字典中后,就可以处理这个字典中的数据了。

pyton_repos.py

# 探索有关仓库的信息
repo_dicts=response_dict['items']
#items 是一个列表,其中包含很多字典,每个字典都包含一个python 仓库的信息
print(repo_dicts)
print("Repositorise returned:",len(repo_dicts))

#研究第一个仓库
repo_dict=repo_dicts[0]
print("\nkeys:",len(repo_dict))
#打印字典中包含的键,查看包含哪些信息
for key in sorted(repo_dict.keys()):
    print(key)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MaGCrzrU-1609325517385)(9410591525644853BC35CEDC6F8E3523)]

1.5. 概述最受欢迎的仓库

编写一个循环,打印API调用返回的每个仓库的特定信息,以便可视化

for repo_dict in repo_dicts:
    print('\nName:',repo_dict['name'])
    print('Stars:',repo_dict['stargazers_count'])

1.6.监视API的速率限制

大多数API存在速率限制,即在特定的时间内可执行的请求数存在限制
了解githubde 限制:在浏览器中输入

https://api.github.com/rate_limit

{
“resources”:
“core”:{“limit”:60,“remaining”:59,“reset”:1609239743,“used”:1},“graphql”:{“limit”:0,“remaining”:0,“reset”:1609239773,“used”:0},“integration_manifest”:{“limit”:5000,“remaining”:5000,“reset”:1609239773,“used”:0},
“search”:
{“limit”:10,“remaining”:10,“reset”:1609236233,“used”:0}},
“rate”:
{“limit”:60,“remaining”:59,“reset”:1609239743,“used”:1}}

主要关心的是搜索的速率限制,即 search 中的参数;用完配额后,将收到一条简单的响应,由此可知已达到API极限,到达极限后,必须等待配额重置

2. 使用Pygal可视化仓库

呈现Github上Python项目的受欢迎程度 创建一个交互式的条形图,条形图的高度表示项目获得了多少颗星,单机条形将进入Github上的主页。

  • pygal:python 数据可视化工具
    特点:pygal比较小众,「注于SVG图」,「擅长交互」,可弥补matplotlib和seborn这方面的缺陷
  • 问题:用matplotlib是不是也一样
import requests
import pygal
from pygal.style import LightColorizedStyle as LCS,LightenStyle as LS
#执行API调用并存储响应

url="https://api.github.com/search/repositories?q=language:python&sort=stars"
r=requests.get(url)

print("status code:",r.status_code)
#需要判断当前网页对于我们的请求是否有响应 ,比如200代表服务器正常响应, 404代表页面未找到

#讲API响应存储在一个变量中
#API返回JSON格式,使用方法json() 将这些信息转换为Python字典
response_dict=r.json()
print("total repositories:",response_dict['total_count'])

# 探索有关仓库的信息
repo_dicts=response_dict['items']

names,stars=[],[]
for repo_dict in repo_dicts:
    names.append(repo_dict['name'])
    stars.append(repo_dict['stargazers_count'])

#可视化
mystyle=LS('#333366',base_style=LCS)
chart=pygal.Bar(style=mystyle,x_label_rotation=45,show_legend=False)  #show_legend=False:隐藏图例
chart.title="Most-starred Pyhton Projects on Github"
chart.x_labels=names

chart.add('',stars)
chart.render_to_file('python_repos.svg')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1j4nLEQo-1609325517388)(4519B765ACA84FDEA13A972A179B67B6)]

2.1 添加自定义工具提示

在Pygal中,将鼠标指向条形将显示它表示的信息,这通常称为工具提示。向chart.add()传递一个字典列表,而不是值列表

names,plot_dicts=[],[]
for repo_dict in repo_dicts:
     names.append(repo_dict['name'])
     #检查description 是否为空,若为空则填充
     description = repo_dict['description']
     if not description:
         description='No description proviede'

     plot_dict={'value':repo_dict['stargazers_count'],
                 'label':str(repo_dict['description']),
                 }
     plot_dicts.append(plot_dict)
     
     
chart.add('',plot_dicts)
chart.render_to_file('python_repose1.svg')

2.2 在图标中添加可单机的链接

names,plot_dicts=[],[]
for repo_dict in repo_dicts:
names.append(repo_dict[‘name’])
#检查description 是否为空,若为空则填充
description = repo_dict[‘description’]
if not description:
description=‘No description proviede’

 plot_dict={'value':repo_dict['stargazers_count'],
             'label':str(repo_dict['description']),
            'xlink':repo_dict['html_url']
             }
 plot_dicts.append(plot_dict)

在这里插入图片描述

3 总结

3.1 API 调用:

url=‘  ’
r=requests.get(url)

print("status code:",r.status_code)
#需要判断当前网页对于我们的请求是否有响应 ,比如200代表服务器正常响应, 404代表页面未找到

#讲API响应存储在一个变量中
#API返回JSON格式,使用方法json() 将这些信息转换为Python字典
response_dict=r.json()

3.2 可视化

pygal:python 数据可视化工具
特点:pygal比较小众,「注于SVG图」,「擅长交互」,可弥补matplotlib和seborn这方面的缺陷

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐