网页视频抓取脚本(弹幕,new返回xml数据使用正则表达式获取所有弹幕消息,匹配模式 )

优采云 发布时间: 2021-09-26 12:05

  网页视频抓取脚本(弹幕,new返回xml数据使用正则表达式获取所有弹幕消息,匹配模式

)

  需要准备的环境:

  A站B账号,需要先登录,否则无法查看历史弹幕记录

  连接互联网的计算机和方便的浏览器,我使用 Chrome

  Python3环境和请求模块,安装使用命令,改源码更快:

  

pip3 install request -i http://pypi.douban.com/simple

  爬取步骤:登录后打开需要爬取的视频页面,打开开发者工具控制台,Chrome可以使用F12快捷键选择网络*敏*感*词*请求

  点击查看历史弹幕并获取请求

  rolldate后面的数字代表视频对应的弹幕编号。返回数据中,timestamp代表弹幕日期,new代表数字。

  在查看历史弹幕中选择一天,勾选,会发出新的请求

  dmroll,timestamp,弹幕数,表示获取该日期的弹幕,1507564800表示2017/10/10 0:0:0

  请求返回xml数据

  使用正则表达式获取所有弹幕消息并匹配模式

  

'(.*?)'

  连接字符串并将所有项目符号屏幕保存到本地文件

  

with open('content.txt', mode='w+', encoding='utf8') as f: f.write(content)

  参考代码如下,弹幕按日期保存为单个文件...因为太多...

  

import requests

import re

import time

"""

爬取哔哩哔哩视频弹幕信息

"""

# 2043618 是视频的弹幕标号,这个地址会返回时间列表

# https://www.bilibili.com/video/av1349282

url = 'https://comment.bilibili.com/rolldate,2043618'

# 获取弹幕的id 2043618

video_id = url.split(',')[-1]

print(video_id)

# 获取json文件

html = requests.get(url)

# print(html.json())

# 生成时间戳列表

time_list = [i['timestamp'] for i in html.json()]

# print(time_list)

# 获取弹幕网址格式 'https://comment.bilibili.com/dmroll,时间戳,弹幕号'

# 弹幕内容,由于总弹幕量太大,将每个弹幕文件分别保存

for i in time_list:

content = ''

j = 'https://comment.bilibili.com/dmroll,{0},{1}'.format(i, video_id)

print(j)

text = requests.get(j).text

# 匹配弹幕内容

res = re.findall('(.*?)', text)

# 将时间戳转化为日期形式,需要把字符串转为整数

timeArray = time.localtime(int(i))

date_time = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)

print(date_time)

content += date_time + '\n'

for k in res:

content += k + '\n'

content += '\n'

file_path = 'txt/{}.txt'.format(time.strftime("%Y_%m_%d", timeArray))

print(file_path)

with open(file_path, mode='w+', encoding='utf8') as f:

f.write(content)

  最终效果

  之后就可以做一些分词来生成词云或者进行情感分析,有时间再聊...

  可以在下方给小编留言学习心得,感谢大家的支持。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线