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 相关文章推荐
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
5分钟 Pipenv 上手指南
Dec 20 Python
Django 响应数据response的返回源码详解
Aug 06 Python
Python collections模块使用方法详解
Aug 28 Python
python实现KNN分类算法
Oct 16 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
Nov 09 Python
Python词云的正确实现方法实例
May 08 Python
详解在OpenCV中如何使用图像像素
Mar 03 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
twig里使用js变量的方法
2016/02/05 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Python科学画图代码分享
2017/11/29 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
python程序需要编译吗
2020/06/19 Python
Django实现随机图形验证码的示例
2020/10/15 Python
python中reload重载实例用法
2020/12/15 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
中餐厅经理岗位职责
2014/04/11 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
团组织关系介绍信
2019/06/24 职场文书
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server