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简单文本处理的方法
Jul 10 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
Python中的延迟绑定原理详解
Oct 11 Python
Django 解决由save方法引发的错误
May 21 Python
对python pandas中 inplace 参数的理解
Jun 27 Python
用Python简陋模拟n阶魔方
Apr 17 Python
在pyCharm中下载第三方库的方法
Apr 18 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 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
PHP数据过滤的方法
2013/10/30 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
jquery移动节点实例
2015/01/14 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
2020/04/28 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python实现分页效果
2017/10/25 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
如何用python批量调整视频声音
2020/12/22 Python
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
团支书的期末学习总结自我评价
2013/11/01 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
授权委托书怎么写
2014/04/03 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
工地材料员岗位职责
2015/04/11 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
中职班主任培训心得体会
2016/01/07 职场文书