在b站看到某些视频的网友评论有些很有意思,
今天用python写40行代码给它一键保存
最新评论的文件,不能爬取,会显示开通会员之类的
所以只爬取热门评论
公众号回复 b站视频评论 获取源代码
欢迎分享
看下效果:
首先打开一个视频
直接全局搜索评论的内容,查找出来之后,点击这个文件,文件里面存放着评论信息,但是一个文件里只放着20条评论信息
我们看一下查询字符串信息
有个next参数,这个就是要查询的评论文件参数,通过改变链接中的next参数,即可获取到不同的文件,从而获取所有的评论
而这个oid就是视频id
看下url地址和访问方法
访问,数据是json格式,所以用.json()获取数据
然后提取评论内容,保存
pl_url = f'https://api.bilibili.com/x/v2/reply/main?csrf=c1a104b50a5df4f737067d21a42ad99f&mode=3&next={p}&oid={oid}&plat=1&seek_rpid=&type=1'
response = requests.get(url=pl_url,headers=headers).json()
for li in response['data']['replies']:
content = li['content']['message']
f.write(content)
f.write('\n')
print(content)
这只是对于一个文件,20条评论保存的
我们需要访问视频页,提取评论数量,和oid来改变链接参数,获取不同的文件
这是视频页源代码中的一部分,其中aid和reply的值就是视频id和评论数量
我们访问视频页链接,把这两个值提取出来
直接用re正则匹配出来
url = url
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.35"
}
# 获取视频页源码,提取 aid 和 评论数量
res = requests.get(url=url,headers=headers).text
# print(res)
reoid = re.search('"aid":(?P<id>.*?),',res)
oid = reoid.group('id')
# print(oid)
reply = re.search(',"reply":(?P<reply>.*?),',res)
pl = int(reply.group('reply'))
# print(pl)
# 用评论数除以20 就得出要改变参数的最大值了,就是获取多少个文件
page = int(pl/20)+1
# print(page)
提取出来之后,再加上获取评论的代码
执行
感谢观看
欢迎分享
公众号回复 b站视频评论 获取源代码