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使用marshal模块序列化实例
Sep 25 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
Python解析树及树的遍历
Feb 03 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
python实现猜拳小游戏
Apr 05 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
Python3.7安装pyaudio教程解析
Jul 24 Python
Python中time标准库的使用教程
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
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
js数组操作学习总结
2013/11/04 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
JavaScript基础语法之js表达式
2016/06/07 Javascript
原生js实现验证码功能
2017/03/16 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
举例介绍Python中的25个隐藏特性
2015/03/30 Python
python编写简单爬虫资料汇总
2016/03/22 Python
python是否适合网页编程详解
2019/10/04 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
会计自荐信范文
2014/03/09 职场文书
丽江古城导游词
2015/02/03 职场文书
医德医风自我评价2015
2015/03/03 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server