from tkinter import *
from pylab import *
import operator
import requests
#爬虫模块1:对数据进行统计返回排行版前十的数据
def pachong2(url):n=[]list1=[]for i in range(1,4):url = url[0:-1] + '{}'.format(i)r=requests .get(url).json()for j in r['data']['datas']:data = {'主播': j['nick'],'人数':float("%.2f" %(float(j['totalCount'])/10000)),}list1.append(data)sorted_x = sorted(list1, key=operator.itemgetter('人数'))for k in range(0,len(sorted_x )):if k>=len(sorted_x )-10:n.append(sorted_x[k])return n
#使用条形图对三个游戏的排行榜前十进行显示
def hit_me3():window.destroy()root = Tk()root.geometry('3000x3000')root.title('spider-man')l = Label(root, text='\n' + '\n' + '                 请选择游戏', font=('宋体', 50),foreground='blue', underline=1, anchor='nw', width=100, height=5, bg='orange')l.pack()#英雄联盟def pa1():root.destroy()list1 = pachong2('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1&tagAll=0&page=2')m = []n = []for i in range(0, len(list1)):m.append(list1[i]['主播'])n.append(list1[i]['人数'])mpl.rcParams['font.sans-serif'] = ['SimHei']patches = plt.bar(x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], height=n, width=0.5, color='k',tick_label=m)plt.legend()plt.ylabel('人数/万')plt.xlabel('主播')plt.title('英雄联盟排行榜前十统计图')for rect in patches:height = rect.get_height()if height != 0:plt.text(rect.get_x() + rect.get_width() / 10, height + 10, '{}'.format(height))plt.show()#穿越火线def pa2():root.destroy()list1 = pachong2('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=4&tagAll=0&page=2')m = []n = []for i in range(0, len(list1)):m.append(list1[i]['主播'])n.append(list1[i]['人数'])mpl.rcParams['font.sans-serif'] = ['SimHei']patches = plt.bar(x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], height=n, width=0.5, color='k',tick_label=m)plt.legend()plt.ylabel('人数/万')plt.xlabel('主播')plt.title('穿越火线排行榜前十统计图')for rect in patches:height = rect.get_height()if height != 0:plt.text(rect.get_x() + rect.get_width() / 10, height + 10, '{}'.format(height))plt.show()#绝地求生def pa3():root .destroy()list1 = pachong2('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2793&tagAll=0&page=2')m = []n = []for i in range(0, len(list1)):m.append(list1[i]['主播'])n.append(list1[i]['人数'])mpl.rcParams['font.sans-serif'] = ['SimHei']patches = plt.bar(x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], height=n, width=0.5, color='k',tick_label=m)plt.legend()plt.ylabel('人数/万')plt.xlabel('主播')plt.title('绝地求生排行榜前十统计图')for rect in patches:height = rect.get_height()if height != 0:plt.text(rect.get_x() + rect.get_width() / 10, height + 10, '{}'.format(height))plt.show()r1 = Radiobutton(root, text='英雄联盟', font=('宋体', 30), bg='orange', command=pa1)r1.pack()r2 = Radiobutton(root, text='穿越火线', font=('宋体', 30), bg='orange', command=pa2)r2.pack()r3 = Radiobutton(root, text='绝地求生', font=('宋体', 30), bg='orange', command=pa3)r3.pack()root.mainloop()
#使用扇形图对总人数进行对比
def hit_me2():window .destroy()list1=pachong('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1&tagAll=0&page=2')list2=pachong('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=4&tagAll=0&page=2')list3=pachong('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2793&tagAll=0&page=2')m=0n=0k=0for i in list1:m=m+i['人数']for i in list2:n=n+i['人数']for i in list3:k=k+i['人数']mpl.rcParams['font.sans-serif'] = ['SimHei']plt.figure(figsize=(6, 9))labels = ['英雄联盟', '穿越火线', '绝地求生']sizes = [m,n,k]colors = ['red', 'yellowgreen', 'lightskyblue']explode = (0.05, 0, 0)patches, l_text, p_text = plt.pie(sizes, explode=explode, labels=labels, colors=colors,labeldistance=1.1, autopct='%3.1f%%', shadow=False,startangle=90, pctdistance=0.6)for t in l_text:t.set_size = (30)for t in p_text:t.set_size = (20)plt.axis('equal')plt.legend()plt.show()
#爬虫模块2:爬取主播和相对应的观看人数,然后进行排序返回
def pachong(url):list1=[]for i in range(1,4):url = url[0:-1] + '{}'.format(i)r=requests .get(url).json()for j in r['data']['datas']:data = {'主播': j['nick'],'人数':float("%.2f" %(float(j['totalCount'])/10000)),}list1.append(data)sorted_x = sorted(list1, key=operator.itemgetter('人数'))return sorted_x
window = Tk()
window.geometry('3000x3000')
window.title('spider-man')
l = Label(window, text='\n'+'                欢迎使用虎牙直播数据分析器', font=('宋体', 40),foreground='blue',underline=1, anchor='nw',width=100, height=3, bg='orange')
l.pack()
def hit_me():window.destroy()list20 = pachong('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=1&tagAll=0&page=2')list21=pachong('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=4&tagAll=0&page=2')def tongji(list20):list1 = []list2 = []list3 = []list4 = []list5 = []list6 = []list7 = []list8 = []list9 = []list10 = []list11 = []list12 = []list13 = []list14 = []for i in range(0, len(list20)):list1.append(list20[i]['主播'])list2.append(list20[i]['人数'])for i in range(0, len(list2)):if list2[i] >= 0 and list2[i] <= 10:list3.append(list20[i]['主播'])if list2[i] > 10 and list2[i] <= 20:list4.append(list20[i]['主播'])if list2[i] > 20 and list2[i] <= 30:list5.append(list20[i]['主播'])if list2[i] > 30 and list2[i] <= 40:list6.append(list20[i]['主播'])if list2[i] > 40 and list2[i] <= 50:list7.append(list20[i]['主播'])if list2[i] > 50 and list2[i] <= 60:list8.append(list20[i]['主播'])if list2[i] > 60 and list2[i] <= 70:list9.append(list20[i]['主播'])if list2[i] > 70 and list2[i] <= 80:list10.append(list20[i]['主播'])if list2[i] > 80 and list2[i] <= 90:list11.append(list20[i]['主播'])if list2[i] > 90 and list2[i] <= 100:list12.append(list20[i]['主播'])if list2[i] > 100 and list2[i] <= 200:list13.append(list20[i]['主播'])if list2[i] > 200:list14.append(list20[i]['主播'])list15 = [len(list3), len(list4), len(list5), len(list6), len(list7), len(list8), len(list9), len(list10),len(list11), len(list12), len(list13), len(list14)]return list15#使用条形图对英雄联盟和穿越火线的观看人数的范围就行人数统计def tiao(list1, list2):mpl.rcParams['font.sans-serif'] = ['SimHei']patches = plt.bar(x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], height=list1, width=0.5, color='k',tick_label=['0-10', '10-20', '20-30', '30-40', '40-50', '50-60', '60-70', '70-80', '80-90','90-100', '100-200', '>200'], label='英雄联盟')patches2 = plt.bar(x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], height=list2, width=0.3, color='r',tick_label=['0-10', '10-20', '20-30', '30-40', '40-50', '50-60', '60-70', '70-80', '80-90','90-100', '100-200', '>200'], label='穿越火线')plt.legend()plt.ylabel('人数/个')plt.xlabel('范围/万')plt.title('虎牙人数统计图')for rect in patches:height = rect.get_height()if height != 0:plt.text(rect.get_x() + rect.get_width() / 10, height + 10, '{}'.format(height))for rect in patches2:height = rect.get_height()if height != 0:plt.text(rect.get_x() + rect.get_width() / 10, height + 5, '{}'.format(height), color='r')plt.show()if __name__ == '__main__':list30 = tongji(list20)list31 = tongji(list21)tiao(list30, list31)
#GUI界面
r1= Radiobutton(window,text='人气范围统计图',font=('宋体',40),bg='orange',command=hit_me)
r1.pack()
r2 = Radiobutton(window,text='全部人气比较图',font=('宋体',40),bg='orange',command=hit_me2)
r2.pack()
r3 = Radiobutton(window,text='游戏排行榜人气前十',font=('宋体',40),bg='orange',command=hit_me3)
r3.pack()
canvas=Canvas(window,bg='blue',height=450,width=450)
image_file=PhotoImage (file='2.png')
canvas .create_image(0,0,anchor='nw',image=image_file)
canvas .pack()
window .mainloop()

**运行效果:

开始界面**

人气范围统计图

全部人气比较图

游戏排行版前十界面

虎牙数据分析-可视化-爬虫-GUI界面结合相关推荐

  1. python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示

    基于爬虫技术的海量电影数据分析 介绍 一个基于爬虫技术的海量电影数据分析系统 系统架构 本系统主要分为四个部分,分别为后端爬虫抓取.数据处理分析可视化.GUI界面展示.启动运行,分别对应getData ...

  2. python漫画爬虫+GUI界面开发

    注:本文只讲思路,非实战教程 [python爬虫+pyqt5+pyinstaller] 前言 前段时间在某个弹窗里打开了一本漫画,奈何正版会员太过昂贵(美元),因此寻思着去某些网站寻找资源.资源很容易 ...

  3. gitk 使用 GUI 界面查看

    阅读目录 git 可视化工具 GUI界面查看 Windows 安装 Git 的 .gitconfig 路径 GIT BASH 下中文乱码解决办法 Git git 可视化工具 在 .git 同级目录下, ...

  4. PyQt5 QTdesigner python 爬虫+简单界面

    实现功能:输入爬取关键词,爬取指定网页内容,输出包含该关键词的title QT 爬虫+GUI界面 一.QTdesigner拖动相应控件构建GUI 二.构建爬虫类,输入关键词,爬取指定网页,查看是否有包 ...

  5. python3爬虫及数据分析_Python3爬虫及可视化数据分析系列图文教程——大纲目录...

    本文首发于:Python3爬虫及可视化数据分析系列图文教程--大纲目录 - Python量化投资​www.lizenghai.com 写在最前 最近更新:2019-03-28 本教程所有源码见文尾. ...

  6. Python自动化整理文件,还增加了可视化GUI界面

    有时候,我们写了一些简单.有用的小代码. 此时,如果能够有一个可视化GUI界面,是不是显得很舒服.今天介绍的一个Python库,超级牛逼,几行代码就可以实现一个可视化界面! Gooey介绍 这里用到的 ...

  7. Python的网易云音乐数据分析系统 爬虫 echarts可视化 Flask框架 音乐推荐系统 源码下载

    Python的网易云音乐数据分析系统 爬虫 echarts可视化 Flask框架 音乐推荐系统 一.技术说明 网易云音乐数据(歌单.用户.歌词.评论)Python爬取Flask框架搭建ECharts. ...

  8. python拿什么做可视化界面好-用python打造可视化爬虫监控系统,酷炫的图形化界面...

    原标题:用python打造可视化爬虫监控系统,酷炫的图形化界面 本文并不是讲解爬虫的相关技术实现的,而是从实用性的角度,将抓取并存入 MongoDB 的数据 用 InfluxDB 进行处理,而后又通过 ...

  9. python实现的、带GUI界面电影票房数据可视化程序

    代码地址如下: http://www.demodashi.com/demo/14588.html ##详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从 ...

最新文章

  1. 关于网站下拉导航的设置
  2. 经常会提到的Java面试题
  3. 2018.12.15 bzoj3676: [Apio2014]回文串(后缀自动机)
  4. 真正开始记录自己学习技术过程的点滴
  5. Spring Cloud 学习笔记(2 / 3)
  6. Python学习之路_day_25(面向对象之封装/多态/组合)
  7. python中datetime函数怎么获得当年年份_Python 日期和时间函数使用指南
  8. 高通音频驱动录音流程(一)
  9. android 串口调试助手源码,GitHub - Michelle0716/SerialPortHelper: Android 串口调试助手
  10. 微信第三方平台全网发布返回Api/普通文本信息失败
  11. 专科学历去学计算机,前景到底如何?
  12. 在线编码工具_每个新编码员都需要25种工具
  13. 海尔消费金融“增收不增利”:利润不及两年前,曾多次被点名批评
  14. python自动化接口_Python接口自动化——Web接口
  15. document.write详解
  16. GTD时间管理:高效管理你的时间,GTD软件一款就够
  17. iOS Instruments工具使用
  18. 2个小巧好用的文本编辑器--Cuda Text(及中文设置方法)与Nopad--
  19. 邮政平邮/小包多个单号的物流信息是怎么同时查询的
  20. gcd(int a, int b) //求最大公约数

热门文章

  1. 来自一位运营的真实产品体验
  2. 安装html5 win7,什么是HTML5? Win7旗舰版浏览HTML5网页要做哪些准备?
  3. B站发布首个8K视频,CCTV-8K频道即将开播,一大堆8K利好消息正在到来,8K赛道要开启加速度了吗?
  4. webuploader常用知识及方法、网站
  5. ZCC1001E 100V 1.5A降压芯片
  6. 电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
  7. 解决 Mac 下编辑 Microsoft Office Word 文档与 Windows 排版不一致的问题
  8. 如何在word中插入横线?
  9. 一次显卡报错的解决过程
  10. 【学习丰富】移动端GPU矩阵乘优化