最近在云顶下棋到了钻石,以我AFK炉石神抽狗、退游LOL玩家以及新晋棋手的三重身份,突然想了解一下《炉石传说》、《英雄联盟》、《云顶之奕》在直播行业中的状态。
因为是简单分析(懒),就选择在一两个时间爬取直播龙头斗鱼的数据(也想弄点图片,但对前段时间碧萝奶奶的事情心有余悸,就算了算了,阿弥陀佛……)。
查看目标网页
斗鱼直播:https://www.douyu.com/directory/all
F12打开开发者工具,点击网页进行翻页,在Network--点击XHR--2中找到想要的数据,发现为异步加载。
URL地址很有规律性。
爬取网页
使用requests构建爬虫程序,休眠时间为1s
# 爬虫程序
def spider(url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/70.0.3538.110 Safari/537.36'}
html = requests.get(url,headers=headers)
print(url)
time.sleep(1)
return html
循环爬取并使用jsonpath进行解析
def main():
num = 1
while True:
html = spider("https://www.douyu.com/gapi/rkc/directory/0_0/%s"%str(num))
num += 1
content = json.loads(html.content.decode('utf-8'))['data']['rl']
for job in content:
# 解析json文件
name = jsonpath.jsonpath(job,"$..nn")[0] # 主播名
hot = jsonpath.jsonpath(job,"$..ol")[0] # 在线人数
cname = jsonpath.jsonpath(job,"$..c2name")[0] # 直播内容
room_name = jsonpath.jsonpath(job,"$..od")[0] # 房间名
url = "http://www.douyu.com" + jsonpath.jsonpath(job,"$..url")[0] # 直播地址
uid = jsonpath.jsonpath(job,"$..uid")[0] # 主播id
time = stamptotime()
设置循环停止条件,网页每页内容为120个,当不满120个时即为最后一页,此时停止程序。
if len(content) != 120:
cursor.close()
conn.close()
break
写入数据库
def insert(sql,values):
try:
cursor.execute(sql,values)
conn.commit() # 上传
except:
conn.rollback() # 如果报错则回滚
sql = """INSERT INTO douyu(uid,name,cname,hot,time,room_name,url) VALUES(%s,%s,%s,%s,%s,%s,%s)"""
values = (uid,name,cname,hot,time,room_name,url)
insert(sql,values)
数据分析
我总共爬了2019-10-07零点以及2019-10-07十三点的数据分为午夜档和下午档,如果需要做直播行业的整体分析可以设置定时爬虫,集中爬取斗鱼、虎牙的网页。
首先看看两个时间点各类直播的个数。
午夜档第一,下午档第二可以看出《英雄联盟》九年了,还是很能打,直播个数多说明观众也多,蛋糕大的话小主播也能生存的下去,不排除追梦硬撑的状况,但这同样说明主播们看好这个分类,应该也有一部分S系列赛的原因;晚上直播人数较多,白天较晚上差1000上下的直播个数,可能是主播们通宵直播还在休息,这也比较符合《英雄联盟》这款游戏受众的情况,上班或者上大学的观众们应该比较习惯晚上看直播,午夜档前三都属于这部分受众,《魔兽怀旧服》有很明显的趋势晚上直播多,白天直播少,毕竟主力80后都是一群秃顶的中年人(嘲讽)了,白天赚钱养家没时间看直播,只能晚上看看酱紫,主播也会集中到晚上播;
《云顶之奕》分别是第七和第四,LOL下属分类确实是干不过大哥,毕竟是通过LOL导流的,会天然筛选掉一部分玩家。
《炉石传说》在两个时间段都没挤进前十,确实是有点凉。
选取两个时间点人气值(非人数,直播软件的水分)排名前20的主播。
晚间档第一主播是旭旭宝宝,属于DNF分类的。毒奶粉排名第一确实是有些没想到,不过数据有些存疑,DNF号称800万勇士,这里居然有799万人气值(人气值和真实人数之间的比例是真的水)。
前二十位中《英雄联盟》在晚间档占2位,在下午档中占3位,至于《云顶之奕》《炉石传说》根本没上榜。
值得一提的是晚间档颜值区上前二十人数一枝独秀,说明小姐姐们确实有魅力,而看直播中大龄单身男青年确实挺多的……
总的来说,联盟活着,炉石凉了。
最后附上两个时间点总的词云图
代码地址: https://github.com/hzw350/Spiders/blob/master/douyu.py
转载:https://blog.csdn.net/qq_41676125/article/details/102307941