import requests
import json
import time
#bv号转av号
table='fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'
tr={}
for i in range(58):
tr[table[i]]=i
s=[11,10,3,8,4,6]
xor=177451812
add=8728348608
def dec(x):
r=0
for i in range(6):
r+=tr[x[s[i]]]*58**i
return (r-add)^xor
BV = input('请输入你要查找的BV号:')
AV = dec(BV)
url = 'https://api.bilibili.com/x/v2/reply?&jsonp=jsonp&pn=1&type=1&oid={}&sort=2&_=1588385350231'.format(AV)
r = requests.get(url)
data = json.loads(r.text)
count,ps = data['data']['page']['count'],data['data']['page']['size']
page = count//ps+2
'''
time.sleep(1)
print('——*电流声*——')
time.sleep(1)
print('系统启动成功')
time.sleep(1)
print('实验启动,日志已记录')
time.sleep(1)
'''
nan,nv,baomi=0,0,0
for j in range(1,page):
print('\n正在获取第%d页,共有%d页'%(j,page-1))
r = requests.get('https://api.bilibili.com/x/v2/reply?&jsonp=jsonp&pn={}&type=1&oid={}&sort=2&_=1588385350231'.format(j,AV))
data = json.loads(r.text)
for i in data['data']['replies']:
#print(i['member']['sex']+' '+i['member']['uname'])
if i['member']['sex']=='男':
nan=nan+1
print(' '+i['member']['sex']+' '+i['member']['uname'])
elif i['member']['sex']=='女':
nv=nv+1
print(' '+i['member']['sex']+' '+i['member']['uname'])
else:
baomi=baomi+1
print(i['member']['sex']+' '+i['member']['uname'])
time.sleep(0.3)
time.sleep(1)
#print('数据库调用已完成')
print('据统计:'+'男:%d,女:%d,保密:%d'%(nan,nv,baomi))
people = nan+nv+baomi
print('男的占%.2f,女的占%.2f,保密的占%.2f'%(nan/people,nv/people,baomi/people))
input('要结束吗')
直接复制粘贴就能用
其中bv转av那段代码来自
如何看待 2020 年 3 月 23 日哔哩哔哩将稿件的「av 号」变更为「BV 号」? - mcfx的回答 - 知乎
https://www.zhihu.com/question/381784377/answer/1099438784
看一下演示效果
爬完之后就会统计性别了