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程序中操作文件之isatty()方法的使用教程
May 24 Python
Python 探针的实现原理
Apr 23 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
python实现发送form-data数据的方法详解
Sep 27 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
python FTP编程基础入门
Feb 27 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 Python
对PyTorch中inplace字段的全面理解
May 22 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+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
Seajs的学习笔记
2014/03/04 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
使用validate.js实现表单数据提交前的验证方法
2018/09/04 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
Python程序设计入门(1)基本语法简介
2014/06/13 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
文员个人求职自荐信
2013/09/21 职场文书
学校运动会开幕演讲稿
2014/01/04 职场文书
九年级家长会邀请函
2014/01/15 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
总经理助理的职责
2014/03/14 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
安全生产专项整治方案
2014/05/06 职场文书
劳动竞赛口号
2014/06/16 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
城管个人总结
2015/02/28 职场文书