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中使用正则表达式的方法
Aug 13 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
python scrapy爬虫代码及填坑
Aug 12 Python
python实现图像拼接功能
Mar 23 Python
Python通过format函数格式化显示值
Oct 17 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 Python
python switch 实现多分支选择功能
Dec 21 Python
Python爬虫之自动爬取某车之家各车销售数据
Jun 02 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
PHPThumb图片处理实例
2014/05/03 PHP
Jquery Ajax请求代码(2)
2011/01/07 Javascript
javascript 闭包
2011/09/15 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
JavaScript实现单点登录的示例
2020/09/23 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
python选择排序算法的实现代码
2013/11/21 Python
python复制与引用用法分析
2015/04/08 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
实习生自荐信范文
2013/11/13 职场文书
外贸实习生自荐信范文
2013/11/24 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
中班开学寄语
2014/04/04 职场文书
活动总结报告格式
2014/05/09 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS