学习笔记(1):写了个python爬取B站视频评论的程序
import requests
import json
import os
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
def enc(x):
x=(x^xor)+add
r=list('BV1 4 1 7 ')
for i in range(6):
r[s[i]]=table[x//58**i%58]
return ''.join(r)def getComment(Bvid , page):
Avid = dec(Bvid)
url = "https://api.bilibili.com/x/v2/reply?pn=" + str(page) + "&type=1&oid=" + str(Avid) + "&sort=2"
data = requests.get(url)
content = json.loads(data.text)
return content['data']['replies']
def getHotComment(Bvid , page ='1'):
Avid = dec(Bvid)
url = "https://api.bilibili.com/x/v2/reply?pn=" + str(page) + "&type=1&oid=" + str(Avid) + "&sort=2"
data = requests.get(url)
content = json.loads(data.text)
return content['data']['hots']
if __name__=='__main__':
print('请输入视频的BV号')
BVID = input()
os.system("cls")
print('请输入想获取的评论的页数')
page = input()
with open('comments.txt','w',encoding='utf-8') as f:
for pg in range(1,int(page)+1):
for index in range(19):
commonComment = getComment(BVID,page)
f.write(commonComment[index]['member']['uname']+':\n')
f.write(commonComment[index]['content']['message']+'\n')
其中BV转AV的程序源自:
作者:mcfx
链接:https://www.zhihu.com/question/381784377/answer/1099438784
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文禁止转载或摘编
--
--
--
分享到:
投诉或建议
评论