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的面向对象思想分析
Jan 14 Python
Python实现的科学计算器功能示例
Aug 04 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
python write无法写入文件的解决方法
Jan 23 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
python3多线程知识点总结
Sep 26 Python
python 表格打印代码实例解析
Oct 12 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
Python中url标签使用知识点总结
Jan 16 Python
python中类与对象之间的关系详解
Dec 16 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获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
PHP在线书签系统分享
2016/01/04 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
Python中操作MySQL入门实例
2015/02/08 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
用python制作个音乐下载器
2021/01/30 Python
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
先进德育工作者事迹材料
2014/01/24 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
大学生安全责任书
2014/07/25 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
利用python做数据拟合详情
2021/11/17 Python