Python爬取虎牙直播数据并分析

这里写的比较懒,面向过程,下一篇会写斗鱼的稍模块化一点

import requests
import time

page, count, num, lis, game_list, hot_list = 1, 0, 0, {}, {}, {}
url = "https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&tagAll=0&page="
while True:
    res = requests.get(url+str(page))
    response = res.json()
    artists = response['data']['datas']

    # 如果响应为空的话,代表遍历结束,数据分析打印
    if artists == None or artists == []:
        lis = sorted(lis.items(), key=lambda x: x[1][0], reverse=True)
        print("\n==统计时间为:{}\n当前虎牙排行前十的主播是:".format(time.strftime("%Y-%m-%d %X", time.localtime())))
        for i in range(10):
            print("{},{},人气:{:,},类型:{}".format(i+1, lis[i][0], lis[i][1][0], lis[i][1][1]))
        print("\n当前共有%s位主播在直播:" % num)
        game_list = sorted(game_list.items(), key=lambda x: x[1], reverse=True)
        for game in game_list:
            if int(game[1]) > 500:
                print("共有{}人直播{},比例为{:.2f}%".format(game[1], game[0], (int(game[1])/num)*100))
            else:
                print("其余数量太少不统计了")
                break
        hot_list = sorted(hot_list.items(), key=lambda x: x[1], reverse=True)
        print("\n当前直播类型人气排名:")
        for hot in range(10):
            print("{},{},总人气{},比例为{:.2f}%".format(hot+1, hot_list[hot][0], hot_list[hot][1],(int(hot_list[hot][1])/count)*100))
        break

    for i in artists:
        store = []
        nick = i['nick']
        introduction = i['introduction']
        totalCount = int(i['totalCount'])  # 人气
        gamename = i['gameFullName']
        count += int(totalCount)
        num += 1
        print("{}.主播姓名:{}人气:{:,}".format(num, nick, int(totalCount)))
        store.append(totalCount)
        store.append(gamename)
        lis[nick] = store
        game_list[gamename] = game_list.get(gamename, 0) + 1
        hot_list[gamename] = hot_list.get(gamename, 0) + totalCount
    print("第%s页结束" % page)
    page += 1


输出示例如下

==统计时间为:2019-10-06 19:55:49
当前虎牙排行前十的主播是:
1,张大仙,人气:5,884,704,类型:王者荣耀
2,狂鸟丶楚河-90327,人气:3,577,796,类型:主机游戏
3,KPL职业联赛,人气:3,575,802,类型:王者荣耀
4,厌世小孤影,人气:3,140,542,类型:王者荣耀
5,神超,人气:3,075,504,类型:英雄联盟
6,完美ob,人气:2,956,072,类型:英雄联盟
7,骚男,人气:2,949,796,类型:英雄联盟
8,CFS中国区预选赛,人气:2,876,783,类型:穿越火线
9,DK-不求人,人气:2,867,380,类型:和平精英
10,mlxgzzz,人气:2,822,162,类型:英雄联盟

当前共有30960位主播在直播:
共有4621人直播王者荣耀,比例为14.93%
共有4190人直播英雄联盟,比例为13.53%
共有1762人直播和平精英,比例为5.69%
共有1587人直播星秀,比例为5.13%
共有1509人直播绝地求生,比例为4.87%
共有1272人直播其他直播,比例为4.11%
共有1176人直播lol云顶之弈,比例为3.80%
共有853人直播魔兽世界,比例为2.76%
共有538人直播穿越火线,比例为1.74%
共有525人直播体育,比例为1.70%
共有520人直播交友,比例为1.68%
其余数量太少不统计了

当前直播类型人气排名:
1,王者荣耀,总人气223562182,比例为13.55%
2,英雄联盟,总人气197361231,比例为11.97%
3,星秀,总人气115217875,比例为6.99%
4,和平精英,总人气89908056,比例为5.45%
5,绝地求生,总人气72194172,比例为4.38%
6,交友,总人气66059182,比例为4.01%
7,lol云顶之弈,总人气51787362,比例为3.14%
8,其他直播,总人气48329005,比例为2.93%
9,魔兽世界,总人气41110071,比例为2.49%
10,一起看,总人气39051166,比例为2.37%

你可能感兴趣的:(Python爬取虎牙直播数据并分析)