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中使用摄像头实现简单的延时摄影技术
Mar 27 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
python实现爬取图书封面
Jul 05 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
python获取Linux发行版名称
Aug 30 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
python 8种必备的gui库
Aug 27 Python
python打包多类型文件的操作方法
Sep 21 Python
Python中如何处理常见报错
Jan 18 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
PHP与javascript对多项选择的处理
2006/10/09 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
python自动化测试实例解析
2014/09/28 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
python selenium 获取接口数据的实现
2020/12/07 Python
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
门卫人员岗位职责
2013/12/24 职场文书
校运会广播稿100字
2014/01/27 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
寒假安全保证书
2015/02/28 职场文书
行政撤诉申请书
2015/05/18 职场文书
重阳节活动主持词
2015/07/04 职场文书
2015团员个人年度总结
2015/11/24 职场文书
学前班教学反思
2016/02/24 职场文书