python3写爬取B站视频弹幕功能


Posted in Python onDecember 22, 2017

需要准备的环境:

一个B站账号,需要先登录,否则不能查看历史弹幕记录

联网的电脑和顺手的浏览器,我用的Chrome

Python3环境以及request模块,安装使用命令,换源比较快:

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

爬取步骤: 登录后打开需要爬取的视频页面,打开开发者工具台,Chrome可以使用F12快捷键,选择network监听请求

python3写爬取B站视频弹幕功能 

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

python3写爬取B站视频弹幕功能

python3写爬取B站视频弹幕功能

其中rolldate后面的数字表示该视频对应的弹幕号,返回的数据中timestamp表示弹幕日期,new表示数目

python3写爬取B站视频弹幕功能

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

dmroll ,时间戳,弹幕号,表示获取该日期的弹幕,1507564800 表示2017/10/10 0:0:0

python3写爬取B站视频弹幕功能

python3写爬取B站视频弹幕功能

该请求返回xml数据

python3写爬取B站视频弹幕功能

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

'<d p=".*?">(.*?)</d>'

拼接字符串,将所有弹幕保存到本地文件即可

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('<d p=".*?">(.*?)</d>', 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)

最终效果

python3写爬取B站视频弹幕功能

python3写爬取B站视频弹幕功能

之后可以 做一些分词生成词云或者进行情感分析,有时间在说吧....

大家可以在下方给小编留言你学习的心得,也感谢你对三水点靠木的支持。

Python 相关文章推荐
python网络爬虫采集联想词示例
Feb 11 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
Python算法应用实战之栈详解
Feb 04 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
python调用自定义函数的实例操作
Jun 26 Python
python如何实现从视频中提取每秒图片
Oct 22 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
pycharm实现猜数游戏
Dec 07 Python
Python之matplotlib绘制折线图
Apr 13 Python
机器学习经典算法-logistic回归代码详解
Dec 22 #Python
利用python将xml文件解析成html文件的实现方法
Dec 22 #Python
python实现数据预处理之填充缺失值的示例
Dec 22 #Python
NetworkX之Prim算法(实例讲解)
Dec 22 #Python
Python实现控制台中的进度条功能代码
Dec 22 #Python
Python中的探索性数据分析(功能式)
Dec 22 #Python
Python反射用法实例简析
Dec 22 #Python
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php zend解密软件绿色版测试可用
2008/04/14 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
php集成开发环境详解
2019/09/24 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python retrying模块的使用方法详解
2019/09/25 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
C#面试题
2016/05/06 面试题
自荐信模版
2013/10/24 职场文书
小学生家长寄语
2014/04/02 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
担保书格式
2015/01/20 职场文书
大学生实习证明
2015/06/16 职场文书
新学期家长寄语2016
2015/12/03 职场文书
MySQL数据库 任意ip连接方法
2022/05/20 MySQL