Python 使用requests模块 执行Web API调用 获取网站数据并可视化

import requests

#执行web api调用,并将响应存储在response_dict字典中
url='https://api.github.com/search/repositories?q=language:python&sort=stars'
headers={'Accept':'application/vnd.github.v3+json'}
r=requests.get(url,headers=headers)
print(f'Status code:{r.status_code}')
response_dict = r.json()

使用网站提供的API可以使用requests.get方法获得网站数据。

网站数据保存在变量r中。

当r.status_code为200是,表明获得的数据是完整的。

再使用r.json()方法,将获得的数据保存在‘字典’response_dict中。

对字典中的数据结构进行整理,筛选,可以进一步实现数据可视化。

数据处理过程如下:

repo_dicts = response_dict['items']
repo_names = [repo_dict['name'] for repo_dict in repo_dicts]
stars = [repo_dict['stargazers_count'] for repo_dict in repo_dicts]
labels = [f"{repo_dict['owner']['login']}<br />{repo_dict['description']}" for repo_dict in repo_dicts]
repo_links = [f"<a href='{repo_dict['html_url']}'>{repo_dict['name']}</a>" for repo_dict in repo_dicts]

可视化设置如下:

from plotly.graph_objs import Bar
from plotly import offline

data = [{
    'type':'bar',#绘制柱状图
    'x':repo_links,#x轴名称为链接,可与用户交互
    'y':stars,
    'hovertext':labels,#鼠标悬停显示label信息
    'marker':{
        'color':'rgb(60,100,150)',
        'line':{'width':1.5,'color':'rgb(2,5,25,25)'}
    },#修改柱状图默认颜色
    'opacity':0.6,#修改色彩透明度
}]

my_layout = {
    'title':'GitHub上最受欢迎的Python项目',
    'titlefont':{'size':28},
    'xaxis':{
        'title':'Repository',
        'titlefont':{'size':24},
        'tickfont':{'size':14},
    },
    'yaxis':{
        'title':'Stars',
        'titlefont':{'size':24},
        'tickfont':{'size':14},
    },
}

fig = {'data':data,'layout':my_layout}
offline.plot(fig,filename='python_repos.html')

最终运行结果:

相关推荐

  1. 使用Python进行数据

    2024-03-22 10:50:05       67 阅读
  2. Python 数据

    2024-03-22 10:50:05       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 10:50:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 10:50:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 10:50:05       82 阅读
  4. Python语言-面向对象

    2024-03-22 10:50:05       91 阅读

热门阅读

  1. LeetCode28:找出字符串中第一个匹配项的下标

    2024-03-22 10:50:05       42 阅读
  2. 【C#语言入门】21. 抽象类与开闭原则

    2024-03-22 10:50:05       36 阅读
  3. 【单元测试】单元测试之Mockito的使用

    2024-03-22 10:50:05       34 阅读
  4. Oracle数据库进行sql优化的思路和方法

    2024-03-22 10:50:05       44 阅读
  5. unity 等待事件之协程和Invoke

    2024-03-22 10:50:05       37 阅读
  6. Oracle慢sql优化——IS NULL替换为NOT EXISTS

    2024-03-22 10:50:05       47 阅读
  7. Spring Colud Alibaba: Spring Cloud Alibaba 是什么

    2024-03-22 10:50:05       39 阅读
  8. Linux系统——Mysql索引详解

    2024-03-22 10:50:05       33 阅读
  9. AI大模型学习

    2024-03-22 10:50:05       40 阅读
  10. node.js是什么怎么用常用方法

    2024-03-22 10:50:05       43 阅读
  11. Dos/DDos攻击原理与算法分析

    2024-03-22 10:50:05       49 阅读
  12. MySQL的利用分区功能将数据存储到不同的磁盘

    2024-03-22 10:50:05       42 阅读