爬取B站视频排名第一《祖国大好河山》1W+弹幕,得出一份词频词云图

本文主要是介绍爬取B站视频排名第一《祖国大好河山》1W+弹幕,得出一份词频词云图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

爬取B站视频排名第一《祖国大好河山》1W+弹幕,得出一份词频词云图

前言

2019 年 10 月 1 日,是一个值得被纪念的日子。转眼间,10年已经过去了。上一次国庆历历在目,当年的我还参加了国庆 60 周年的翻花表演。

平时热衷于 B 站的我,扫到了排行榜排名第一的视频,数百位摄影师联合制作,《10分钟带你看绝美祖国大好河山!》

感兴趣的,可以复制下面地址看下:
https://www.bilibili.com/video/av69241910/

可以看到上图右侧,有数千条弹幕。通过查看历史记录,发现是 9.28 才有的第一条弹幕,目测应该是 9.28 上传的视频。出于感兴趣,于是打算来个词频统计。

文章写到这里,笔者并没有开始代码的编写,也不知道弹幕哪个词出现的频率最高。(平时写文章有个习惯,都是先写前言,搭好文章架子再开始写具体的代码实现。)

在结果出现之前,来个盲猜吧!祖国,快乐。这两个没猜错,应该是最高的频率词!

框架性思维

不知道大家还记不记得爬虫的框架步骤。

首先,熟悉网站结构,找出我们想要的数据接口。

其次,分析提取数据。

最后,完成本次的词频统计。

所以,让我们先来找接口吧!B 站的接口很好找哟!

B站弹幕接口

打开上述提到的视频链接。

提供一个思路,打开 F12 后,一般默认先去找 XHR 里是否有相似数据。因为 XHR 这栏,是异步请求。意味着,即使不刷新页面,也可以像服务器异步发送请求,不会影响用户操作。

总的来说,下面的异步请求并不多,一个个去看,也能全部浏览完。不过有个小技巧,就是根据名字挑着看,比如那些常见的单词,list。

F12看数据,可以看到不是 json 的形式返回的,用浏览器访问下试试。

它是以标签的形式,将数据展示的。而这种形式,恰是之前在小课堂中介绍到的 XML 格式。

其中有个 maxlimit 的标签,数字显示 1500 。猜测应该是此页数据最大 1500 条数据。复制到文本工具里,删除非数据以外的头尾,验证下,一共 1502 行。

由此得知,这并不是历史数据。继续来挖,点击查看历史,选择9.28日,F12再次看请求。

当然,你可以先清除下之前的F12记录,以免太乱,点击F12的小垃圾桶即可。我这里用的是 Safari 浏览器,谷歌浏览器类似操作。

选择日期:

再次查看:

出现了 history 的名字,无疑就是它了!明显,请求地址发生了改变。

https://api.bilibili.com/x/v2/dm/history?type=1&oid=120004475&date=2019-09-28

这样一来,就有了这几天的历史数据。模拟请求,修改下 url 中 date 字段的日期。接下来只需要将返回的 XML 进行数据提取就好啦!

代码简说及成果展示

需要的第三方库:

  • requests
  • jieba
  • wordcloud
  • numpy
  • PIL
  • matplotlib
pip install jieba
pip install request
pip install wordcloud
pip install numpy
pip install Pillow
pip install matplotlib

简单的说下代码思路。

用 requests 库发起模拟请求,请求头需要携带自己的 cookie ,否则会提示请登录的字眼。

爬取弹幕后,存储到一个公有 list 中,通过 jieba 分词的第三方库,对其进行词频统计分析。

其中 jieba 使用的核心代码是这段:

https://github.com/fxsjy/jieba

最后,使用 wordcloud 生成词云图核心代码:

def __draw_word(self):""" 词云生成 """d = os.path.dirname(__file__)alice_mask = np.array(Image.open(os.path.join(d, "gq.jpg")))windows_font_path = 'C:/Windows/Fonts/simsun.ttc'  # winodws字体mac_font_path = '/System/Library/Fonts/PingFang.ttc'  # mac字体wc = WordCloud(font_path=mac_font_path,  # 设置字体格式,系统自带的中文字体mask=alice_mask,  # 设置背景图background_color='white',max_words=400,  # 最多显示词数max_font_size=150  # 字体最大值))wc.generate_from_frequencies(self.word_dict)  # 从字典生成词云image_colors = wordcloud.ImageColorGenerator(alice_mask)  # 从背景图建立颜色方案wc.recolor(color_func=image_colors)  # 将词云颜色设置为背景图方案plt.imshow(wc, interpolation='bilinear')  # 显示词云plt.axis('off')  # 关闭坐标轴plt.show()  # 显示图像

生成词云图时,需要一张原图做"铺垫"。

原图:

渲染:

总结

总的来说,盲猜与结果相似度还可以!。。

图片的清晰度有些模糊,可以看到 生日快乐、祖国、我爱你、盛世 字眼相对较大,当然也可以看到中国许多的地名,山东、四川、苏州、山西等等。。。

相信每个看视频的小伙伴,看到自己家乡美景的时候,都会很自豪吧!

本篇文章可以当做一个熟悉词云的练手小项目。从数据角度来看,实用的意义并不是很大!

想看全部源码的同学,后台回复 70 ,即可获得源码地址。

这篇关于爬取B站视频排名第一《祖国大好河山》1W+弹幕,得出一份词频词云图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/274866

相关文章

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

hdu 2093 考试排名(sscanf)

模拟题。 直接从教程里拉解析。 因为表格里的数据格式不统一。有时候有"()",有时候又没有。而它也不会给我们提示。 这种情况下,就只能它它们统一看作字符串来处理了。现在就请出我们的主角sscanf()! sscanf 语法: #include int sscanf( const char *buffer, const char *format, ... ); 函数sscanf()和

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段