type
Post
status
Published
date
Jul 4, 2022
slug
基于requests库统计B站观看记录
summary
基于requests库统计B站观看记录
tags
B站
历史
python
category
编程
icon
password
Property
Nov 3, 2022 02:17 AM
因为是相当模拟访问历史页面,所有只能在B站限制下查询历史记录(大概一两千左右),需要事先获取自己账号的SESSDATA和_uuid,具体怎么获取可以百度。
输出可以查询到的最早的记录,记录总数,观看总时间,观看次数前五的标签和up主。
已查询到1403条记录 最早可查询记录为:2022-04-06 15:33:43 总计观看3750.366666666667分钟 观看次数前五名如下: 标签: tag:单机游戏,观看次数:160次 tag:搞笑,观看次数:133次 tag:网络游戏,观看次数:117次 tag:电子竞技,观看次数:105次 tag:日常,观看次数:89次 up主: up:鹦鹉螺预告片,观看次数:30次 up:观察者网,观看次数:24次 up:老郭美食,观看次数:15次 up:小菜菜菜菜哟,观看次数:15次
 
有条件可以直接点击下面的colab链接运行。
 
 
import requests import time cookies="_uuid=你的_uuid; SESSDATA=你的SESSDATA" url="https://api.bilibili.com/x/web-interface/history/cursor" hd= {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/99.0.4844.82 Safari/537.36'} r= requests.Session() r.cookies['cookies']=cookies response= r.get(url,headers=hd) h_list=response.json()['data']['list'] h_num=len(h_list) h_time=0 h_tags=[] h_author_name=[] watch_time=0 for iin range(len(h_list)): if h_list[i]['progress']==-1: watch_time= watch_time+ h_list[i]['duration'] else: watch_time= watch_time+ h_list[i]['progress'] while len(h_list)>0: h_time= h_list[len(h_list)-1]['view_at'] url= "https://api.bilibili.com/x/web-interface/history/cursor?view_at="+str(h_time) response= r.get(url,headers=hd) h_list= response.json()['data']['list'] h_num=h_num+ len(h_list) for iin range(len(h_list)): h_tags.append(h_list[i]['tag_name']) h_author_name.append(h_list[i]['author_name']) if h_list[i]['progress']==-1: watch_time=watch_time+h_list[i]['duration'] else: watch_time= watch_time+ h_list[i]['progress'] print("已查询到"+str(h_num)+"条记录") h_time=time.localtime(h_time) print("最早可查询记录为:"+time.strftime("%Y-%m-%d %H:%M:%S", h_time)) watch_time=watch_time/60 print("总计观看"+str(watch_time)+"分钟") tag_names=list(set(h_tags)) tag_names.pop(0) tag_names_num=[] for iin range(len(tag_names)): tag_names_num.append(h_tags.count(tag_names[i])) author_name= list(set(h_author_name)) author_name.pop(0) author_name_num=[] for iin range(len(author_name)): author_name_num.append(h_author_name.count(author_name[i])) print("观看次数前五名如下:") print("标签:") for iin range(5): max_num=tag_names_num.index(max(tag_names_num)) max_watch_tag=tag_names[max_num] max_watch_tag_num=tag_names_num[max_num] tag_names.pop(max_num) tag_names_num.pop(max_num) print("tag:"+max_watch_tag+",观看次数:"+str(max_watch_tag_num)+"次") print("up主:") for iin range(5): max_num=author_name_num.index(max(author_name_num)) max_watch_up=author_name[max_num] max_watch_up_num=author_name_num[max_num] author_name.pop(max_num) author_name_num.pop(max_num) print("up:"+max_watch_up+",观看次数:"+str(max_watch_up_num)+"次")
决策树一维回归分析股票涨跌幅度多车次的模拟退火算法(SA)

  • Waline
  • Giscus