因为晚上喝了杯茶,反正都睡不着了,突发奇想写一个脚本
注意:这里的headers中的两个参数请读者根据自己的来填写,笔者这里留了空,直接复制代码是运行不了的(cookies涉及到个人隐私)
代码如下:
'''
* author:junqian
* date:2022/12/17 2:26
'''
import requests
import pprint
import re
import random
import time
headers = { # 请求头
'cookie': ,
'user-agent':
}
def get_res(html_url): # 得到视频的页面数据
res = requests.get(url=html_url, headers=headers)
return res
def get_video_bv(html_url): # 得到视频的bv号
res = get_res(html_url)
json_data = res.json()
v_list = json_data['data']['list']['vlist']
v_list = [i['bvid'] for i in v_list] # 列表推导式
# print(v_list)
# pprint.pprint(res.json())
return v_list
def get_video_oid(video_bvid):
# 获取视频的oid
video_url = f'https://www.bilibili.com/video/{video_bvid}'
res = get_res(video_url)
# \d+ 匹配多个数字
oid = re.findall('<script>window\.__INITIAL_STATE__={"aid":(\d+),', res.text)[0]
return oid
def comment(oid):
comment_list = ['太棒啦', '来惹来惹', '一键三连!']
content = random.choice(comment_list) # 随机在comment_list中选择一条进行评论
comment_url = 'https://api.bilibili.com/x/v2/reply/add' # 通过开发者工具得到评论的接口
data = { # 参数
'csrf': 'e88e2d022602d700ebb5fe54a3ae16dc',
'message': content,
'oid': oid,
'plat': 1,
'type': 1
}
res = requests.post(url=comment_url, headers=headers, data=data)
status_code = res.status_code
print(status_code)
return status_code
url = "https://api.bilibili.com/x/space/wbi/arc/search?mid=519600563&pn=1&ps=25&index=1&order=pubdate&order_avoided=true&w_rid=3578c8880ef909b090c87cde8e1e9121&wts=1671211621"
v_list = get_video_bv(url)
for index in v_list:
time.sleep(3)
oid = get_video_oid(index)
status_code = comment(oid)
if status_code == 200:
print(f'{index}评论成功')
else:
print(f'{index}似乎被反爬了')