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抓取并保存html页面时乱码问题的解决方法
Jul 01 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 Python
Django-imagekit的使用详解
Jul 06 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
pandas 按日期范围筛选数据的实现
Feb 20 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/06/06 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
JS 面向对象的5钟写法
2009/07/31 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
详解如何使用Python编写vim插件
2017/11/28 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
python 的topk算法实例
2020/04/02 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
班组长安全生产职责
2013/12/16 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
外出培训学习心得体会
2016/01/18 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android