欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Python学习笔记】【requests】【Pygal】(十五)数据可视化:使用Web API

程序员文章站 2022-07-14 16:45:46
...

API应用编程接口

requests模块

安装requests:cmd命令pip install --user requests
使用过程中产生报错:requests.exceptions.SSLError
解决:安装三个包
pip install cryptography
pip install pyOpenSSL
pip install certifi

requests.exceptions.SSLError报错

Web API

使用API调用请求数据:
https://api.github.com/search/repositories?q=language:python&sort=stars

语句 功能
https://api.github.com/ 请求发送到Github网站中调用API的部分
search/repositories 让API搜索Github上的所有仓库
?q= 指定查询,问好指出要传递一个实参
language:python 语言为Python
sort=stars 排序方式为按star

监视API速率限制:
https://api.github.com/rate_limit

处理API响应

import requests

# 执行API调用
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url) # 返回JSON格式信息
print("Status code:", r.status_code) # 属性表示是否请求成功,200表示成功。200

# 存储API响应
response_dict = r.json() # 把JSON转换为一个Python字典
print("Total repositories:", response_dict['total_count']) # 5576039

# 仓库
repo_dicts = response_dict['items'] # 每个元素都是一个字典
repo_dict = repo_dicts[0] # 第一个字典
print("\Keys:", len(repo_dict)) # 字典中的键长度。74
for key in sorted(repo_dict.keys()): # 遍历键值
    print(key)

使用Pygal可视化仓库

import requests
import pygal
from pygal.style import LightColorizedStyle as LCS # 类
from pygal.style import LightenStyle as LS # 类
from requests.packages import urllib3
urllib3.disable_warnings() # 关闭warning

# 执行API调用
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url, verify=False) # 返回JSON格式信息
print("Status code:", r.status_code) # 属性表示是否请求成功,200表示成功。200

# 存储API响应
response_dict = r.json() # 把JSON转换为一个Python字典
print("Total repositories:", response_dict['total_count']) # 5577125

# 仓库
repo_dicts = response_dict['items'] # 每个元素都是一个字典
# 存储名字,获得的星星
names, stars, plot_dicts = [], [], []
for repo_dict in repo_dicts:
    names.append(repo_dict['name'])
    stars.append(repo_dict['stargazers_count'])
    plot_dict = {
        'value': repo_dict['stargazers_count'],
        'label': repo_dict['description'],
        'xlink': repo_dict['html_url'],
    }
    plot_dicts.append(plot_dict)

# 可视化
my_style = LS('#333366', base_style=LCS) # 定义一种样式

# 设置属性
my_config = pygal.Config() # 创建一个实例
my_config.x_label_rotation = 45 # x轴标签旋转45度
my_config.show_legend = False # 隐藏图例
my_config.title_font_size = 24
my_config.label_font_size = 14
my_config.major_label_font_size = 18
my_config.truncate_label = 15 # 名称限制15个字符,移动光标可显示完整
my_config.show_y_guides = False # 隐藏水平线
my_config.width = 1000

chart = pygal.Bar(my_config, style=my_style) # 创建条形图
chart.title = 'Most-Starred Python Projects on GitHub'
chart.x_labels = names

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

【Python学习笔记】【requests】【Pygal】(十五)数据可视化:使用Web API
这个程序,有点问题,如果我用列表值当y轴,就会报错:AttributeError: ‘NoneType’ object has no attribute ‘decode’
然后反复报错:requests.exceptions.SSLError: HTTPSConnectionPool(host=‘api.github.com’, port=443)
待解决