python b站弹幕分析_Python获取B站视频弹幕 简单处理
B站弹幕
概述
之前看到了网上有人做过一些up的B站弹幕数据可视化,感觉还挺有意思,于是自己就动手做着玩了一下(没有做可视化)。祝福武汉,祝福中国!
项目实现
(1)获取弹幕数据,我本来想着是获取某一个up的全部视频的弹幕数据,后来发现了一个问题:弹幕数据是存在JSON或者XMl中的。数据依靠一个id号标识,我本以为就是视频的av号,结果查看元素后却发现不是。参考了网上的一些文档发现弹幕数据存储在一个url中,因此只需要获取这个网址中的内容即可。
(2)获取数据,就采用爬虫惯用的requests模块即可
(3)解析数据
(4)数据持久化以及数据简单处理
初始化
首先初始化一些下面需要使用的基本参数
def __init__(self): self.headers = { # 自己添加自己的即可 } self.base_url = 'https://api.bilibili.com/x/v1/dm/list.so?oid={}' self.url = '' self.barrage_result = [] self.danmu = [] self.danmu_count = []
初始化自己的headers,以及初始化一个基础的url。然后初始化几个下面要用的参数。
获取网页
获取网页信息,并将数据存储到本地
# 获取信息
def get_page(self):
# 延时操作,防止太快爬取
time.sleep(0.5)
response = requests.get(self.url, headers=self.headers)
with open('bilibili.xml', 'wb') as f: f.write(response.content
解析数据
解析网页,将所有弹幕信息存储在danmu列表中
# 解析网页 将所有弹幕信息存储在danmu列表中
def param_page(self): time.sleep(1) if self.barrage_result: # 文件路径,html解析器 html = etree.parse('bilibili.xml', etree.HTMLParser()) # xpath解析,获取当前所有的d标签下的所有文本内容 results = html.xpath('//d//text()') # 将去重后的弹幕存储起来 for one in results: self.danmu.append(one) print('总的实时弹幕数量:', len(self.danmu))
数据持久化
对获取到的数据进行简单处理,并持久化,由于后期还有其他的操作,因此我存了两种形式。
# 对获取的弹幕数据进行简单处理
def ana_result(self): print('开始处理弹幕') for one_danmu in self.danmu: if one_danmu not in self.danmu_count: self.danmu_count.append(one_danmu) print('弹幕去重后数量为:', len(self.danmu_count)) with open('tanmu.txt', 'w', encoding='utf-8') as f: for danmu in self.danmu_count: # 数量的统计 amount = self.danmu.count(danmu) f.write(danmu + ':' + str(amount) + '\n') book = xlwt.Workbook(encoding='utf-8-sig', style_compression=0) sheet = book.add_sheet('B站部分视频弹幕', cell_overwrite_ok=True) sheet.write(0, 0, '弹幕内容') sheet.write(0, 1, '弹幕出现次数') n = 1 for danmu in self.danmu_count: amount = self.danmu.count(danmu) sheet.write(n, 0, danmu) sheet.write(n, 1, amount) n = n + 1 book.save(u'B站部分视频弹幕.xls')
一般而言数据持久化之后也就结束了,不过为了后面一些操作,在此处我又做的一个某关键字弹幕计数的功能
# 对含有某关键字的弹幕计数
def key_count(self, key): value = key pattern = '.*' + value + '.*' tempList = [] for one in self.danmu: obj = re.findall(pattern, one) if len(obj) > 0: tempList.extend(obj) print('弹幕中含有', key, '的弹幕数量为:', len(tempList))
整个爬虫我用以下程序段调用。
def run(self): for i in range(145134329, 145144329): self.get_url(i) self.barrage_result = self.get_page() self.param_page() self.key_count('武汉加油') self.key_count('武汉') self.ana_result()
在range中填写一个oid列表,遍历这个列表去抓取弹幕数据。如果没有已知oid列表可以像我上面的方法去遍历。
运行时界面如下。
文章来源: blog.51cto.com,作者:mb5fe94b3e552d9,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.51cto.com/15069472/2577358
python b站弹幕分析_Python获取B站视频弹幕 简单处理相关推荐
- python爬取b站弹幕分析_Python 爬取「后浪」弹幕,看看大家都在说什么
前天,正好是五四青年节, B 站的一条献给年轻人的视频「后浪」火了,一时间到处都是各种讨论「后浪」的声音. 其他的平台先不管,先看看 B 站平台本身用户对「后浪」的评价. B 站的评论是弹幕的形式,想 ...
- python温度转换代码分析_Python温度转换实例分析
本文主要研究的是Python语言实现温度转换的相关实例,具体如下. 代码如下: #TempConvert.py val=input("请输入带有温度表示符号的温度值(例如:32c)" ...
- python如何做敏感度分析_Python中的模型敏感度分析(使用Salib)
敏感度分析的基础概念 文本主要参考了维基百科(对其中的关键部分进行了摘选了翻译):https://en.wikipedia.org/wiki/Sensitivity_analysisen.wikip ...
- python爬取b站弹幕分析_python爬取B站视频弹幕分析并制作词云
目录1.分析网页 2.爬虫+jieba分词+制作词云2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https://www.bilibili.co ...
- python弹幕代码_python实现B站自动刷弹幕
这是根据刚入b站的大佬@小段不二 的av83610261写的,算是交作业了 用到的软件:Chrome Python+pycharm (vs code或者其他ide都可以不过pycharm实在是太香了) ...
- python读取时间序列csv可视化_Python获取时序数据并进行可视化分析
本帖最后由 林宝宝 于 2019-7-31 17:29 编辑 问题导读: 1.获取第三方平台的接口数据的方法是什么? 2.怎么做数据清洗与合并?主要有数据类型转换.重新排序.索引重置.数据合并 3.时 ...
- python微博评论情感分析_Python采集微博热评进行情感分析祝你狗年脱单
Ps: 重要的事情说三遍!!! 结尾有彩蛋,结尾有彩蛋,结尾有彩蛋. 如果自己需要爬(cai)虫(ji)的数据量比较大,为了防止被网站封Ip,可以分时段爬取,另外对于爬到的数据一般是用来存储数据库,这 ...
- python数据获取与文本分析_python文本分析之处理和理解文本
前言: 在进行自然语言的建模(NLP)时,我们通常难以处理文字类型的数据,因此在常见的机器学习项目中,数据的格式是结构化的,就算在视觉处理的时候也是一个矩阵或者高维张量的形式.那么文字类型的数据我们应 ...
- python 打开网页开发者工具_Python获取网页指定内容(BeautifulSoup工具的使用方法)...
page = urllib2.urlopen(url) contents = page.read() #获得了整个网页的内容也就是源代码 print(contents) url代表网址,content ...
- python读取excel股票历史数据_python获取涨停板历史数据
获取A股每天的涨停板数据,起始日期和截止日期都可以自定义. 这个数据可以用来后续的大数据分析,比如统计每天涨停板的数目和大盘指数的相关性,涨停打开次数与当日人气的强弱的关系. 点击查看大图 pytho ...
最新文章
- 汇编语言基础 debug的使用
- 关于高阶导数的一个不等式估计
- Python基础教程:条件语句的七种写法
- 大数据新手的0基础学习路线,从菜鸟到高手的成长之路
- 百练 03 复杂的整数划分问题
- 金山云服务器内网带宽,性能提升40%!第三代金山云服务器全面覆盖不同企业计算力需求...
- 【LeetCode】【refine 3】题号:*3. 无重复字符的最长子串
- python古诗词生成_唐诗生成器
- 360随身wifi2驱动 v5.3.0.1035 官方版
- java this 逸出_Java并发编程——this逸出解决方法的思考
- Pr 2019版安装教程
- Hyperledger Fabric架构详解
- 18M 超轻量图像识别系统,商品、车辆、人脸识别一网打尽!
- 双节本世纪仅有三次,特送福利!
- NLP-对话聊天机器人
- 【软件测试】接口——基本测试流程
- i5 11300H和i7 10750h 对比哪个好
- 看完多线程通透了(爆干4万字)
- vue显示日历插件_一个干净轻巧的插件,用于显示属性日历
- Android Studio 安装和配置genymotion模拟器过程中所遇到的问题