惊!插头中间的洞竟是用来做这,浙大考研论坛,红楼之填房邢氏
最近 b 站出了一个年度报告,统计用户一年当中在 b 站上观看视频的总时长和总个数。过去一年我居然在 b 站上看了2600+
个视频,总计251
个小时,居然花了这么多时间,吓得我差点把 bilibili app 卸载了...
然而我又很好奇,到底我在 b 站上都看了些什么类型小姐姐的视频,用几行 python 代码实现了一下。
实现起来非常容易,获取 cookie 模拟请求即可
检查
network
页面,筛选框输入history
,对结果进行筛选,页面滚轮往下即可看到浏览过程中的历史记录请求的header
cookie.txt
文本里
import json
import requests
def read_cookies_file(filename):
"""read cookie txt file
:param filename: (str) cookies file path
:return: (dict) cookies
"""
with open(filename, 'r') as fp:
cookies = fp.read()
return cookies
def get_header(filename):
cookie = read_cookies_file(filename)
headers = {
'accept': '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-cn,zh;q=0.9,en-us;q=0.8,en;q=0.7',
'connection': 'keep-alive',
'cookie': cookie,
'host': 'api.bilibili.com',
'referer': 'https://www.bilibili.com/account/history',
'user-agent': 'mozilla/5.0 (macintosh; intel mac os x 10_14_2) applewebkit/537.36 '
'(khtml, like gecko) chrome/71.0.3578.98 safari/537.36'
}
return headers
def req_get(headers, url):
resp = requests.get(url, headers=headers)
return json.loads(resp.text)
def get_all_bili_history(cookie_file):
headers = bilibili.get_header(cookie_file)
history = {'all': []}
for page_num in range(max_page):
time.sleep(0.6)
url = 'https://api.bilibili.com/x/v2/history?pn={pn}&ps={ps}&jsonp=jsonp'.format(pn=page_num, ps=page_per_num)
result = bilibili.req_get(headers, url)
print('page = {} code = {} datalen = {}'.format(page_num, result['code'], len(result['data'])))
if len(result['data']) == 0:
break
history['all'].append(result)
return history
1000
条或者最近3
个月的播放记录尽量不要使用不安全的 wifi 网络,有可能会被别有用心之人获取网络请求的 package,易泄露个人隐私。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论