基于Python 哔哩哔哩网站热门视频数据采集与可视化分析设计与实现,有聚类有网络语义研究
一、项目背景
随着互联网和数字媒体行业的快速发展,视频网站作为重要的内容传播平台之一,用户量和内容丰富度呈现爆发式增长。本研究基于Python对b站热门视频分析与研究,采用requests爬虫、聚类分析以及matplotlib数据可视化技术,并pandas进行数据处理,从哔哩哔哩热门视频数据中提取有价值的信息,为平台运营、内容生产等决策提供科学依据和指导。
二、技术选型
(一)网络爬虫技术
基于Python对b站热门视频分析与研究依赖于网络爬虫技术,通过模拟用户行为自动获取网站上的数据。网络爬虫(也称“蜘蛛”)通过发送请求获取目标网页的HTML源代码并解析其中的内容。
(二)可视化技术
在基于Python对b站热门视频分析与研究项目中,数据可视化是展示分析结果的重要环节。借助Python的可视化工具,复杂的视频数据可以通过直观的图形呈现,帮助用户快速理解数据规律。
(三)聚类分析技术
聚类分析是一种无监督学习算法,用于将数据集中的对象划分为相似的组或簇。在基于Python对b站热门视频分析与研究项目中,本文使用聚类分析算法对热门视频收藏转发评论进行分类。
三、技术路线
爬虫技术:使用Python的requests库进行网页请求,获取网站上的HTML内容。使用json解析,提取出所需的数据。
数据清洗技术:使用Python的pandas库进行数据清洗和处理。可以使用pandas提供的功能,如数据过滤、缺失值处理、重复值处理等。
数据可视化技术(matplotlib):matplotlib、seaborn等库进行数据处理与可视化。pandas用于数据加载、清洗和聚合,matplotlib和seaborn用于生成各种类型的图表,如柱状图、直方图和矩形图。通过pandas的数据操作方法(如groupby、drop_duplicates、astype等),对热门歌娶数据进行分析,并利用matplotlib进行图形展示。seaborn提供了更为美观的绘图风格,提升了图表的可读性。整体方案以数据驱动为核心,配合图表展示,帮助清晰呈现数据趋势。
四、数据采集与清洗
首先在B站爬取热门视频相关数据,其次对爬取下来的数据进行预处理,即除去残缺、冗余的数据,最后将数据可视化,如图1为数据处理流程。
图1 数据采集与清洗
(一)数据采集实现
数据采集的实现从B站热门页面中采集数据,并将其保存到CSV文件的过程,本次采集共采集6500条数据。通过 requests 库请求 B站搜索接口,使用循环翻页机制依次爬取包含各个类别的前 28 页视频数据。请求时附加必要的请求头和参数,以确保数据获取的稳定性和合法性。脚本解析返回的 JSON 数据,提取视频的关键信息,如类别、作者、标题、标签、播放量、弹幕数、点赞数、播放时长、评论数、收藏数、发文时间、视频唯一标识等。数据采集流程图如下图2:
(二)数据清洗实现
数据清洗包括了多个关键步骤,方法涵盖了时间处理、分类标签化、缺失值与异常值处理、停用词过滤等,确保数据整洁并提高分析的准确性和效率。这些清洗步骤为后续的数据可视化和模型分析奠定了坚实的基础。效果如图3所示:
图 3词频结果
缺失值处理:删除或忽略数据集中存在的缺失值,避免对统计结果造成影响。使用dropna()方法,移除标签字段中的缺失值。
数据聚合:对数据进行汇总,计算分类指标的均值或计数。按照类别分组,计算各指标(如播放量、点赞数等)的平均值。结果如下:
图4 聚合结果
字段清洗与格式标准化:标准化数据格式,确保数据类型一致。将时间字段分解后统一为秒数(数值格式)。确保数值字段的数据类型为整数或浮点数,避免混入非数值字符。
去重处理:删除重复记录,确保数据唯一性。使用drop_duplicates()函数去除重复行:
异常值处理:过滤异常值,确保数据合理性。剔除播放时长明显不合理的异常数据(如过大值)。
生成统计字段:为分析生成衍生统计字段。统计每个类别在每一天发布的视频数量,为时间序列分析提供数据支持。
五、数据分析与可视化
本项目的目的是通过对B站热门视频进行分析,揭示受欢迎的视频信息和时间趋势。通过使用 Python 的 pandas 进行数据清洗、对数变换,并使用 matplotlib 进行多种类型的可视化展示,分析热门视频的收藏、播放和评论数分布情况。还利用词云图和矩形树图等展示了标题内容的关键词分布和标签分布,从而帮助用户深入了解平台上的内容特征。通过使用聚类算法,发现视频播放和互动数据之间的潜在关联和特征,为创造者提供更加准确和详细的视频播放和互动分类信息。
(一)播放时长分布
通过播放时长的区间划分,统计各区间的占比,便于了解用户偏好播放时长的分布情况。实现播放时长分布饼图,基于 pyecharts 绘制。具体样式优化(如阴影、边框等)提升了视觉效果,适用于深色背景。
运行结果,如图8所示:
图 8 播放时长分布
从播放时长分布数据来看,>6分钟的播放量(1820)占据显著比例,表明长时间视频更受欢迎;1-2分钟和**<1分钟的播放量分别为990和905,显示短视频仍有一定吸引力;2-6分钟的播放量逐渐减少,尤其是5-6分钟**(347)和4-5分钟(444),说明中等时长视频相对吸引力较低。这种分布反映了观众偏好更明确的时长选择。
(二)不同类别指标均值
将每个类别的指标(如播放量、弹幕数等)按类别分组计算均值,存入 grouped 数据表。使用 plt.subplots() 创建多子图布局,指定行列数量和整体尺寸(如 3x2 布局)。
运行结果如图10所示:
图 10 运行结果
从不同类别的指标均值来看,各类别视频表现差异显著:
播放量:舞蹈类(1239万)和美食类(1078万)视频显著高于其他类别,展示了较强的吸引力;汽车类最低(454万)。
弹幕数:舞蹈类(34901)和游戏类(17893)表现突出,说明互动性较强;汽车类较少(4138)。
点赞数:舞蹈类(52万)和美食类(29万)最受欢迎,反映用户偏好。
评论数:游戏类(8331)和舞蹈类(12791)讨论热度较高;美食类和汽车类相对低。
收藏数:舞蹈类遥遥领先(21万),动漫类和科技类(12万左右)也表现较好。
舞蹈类视频在多项指标中占优,具有高互动性和吸引力;汽车类较弱。
(三)作者贡献TOP 20
实现作者贡献TOP 20的柱形图主要使用 plt.figure() 设置画布大小和分辨率,创建子图 ax,并指定背景颜色为白色。该图直观展现UP主的发布贡献,适合分析数据分布。
运行结果如下图12:
图12 运行结果
从作者贡献TOP 20的数据来看,这些作者在平台内的影响力突出,各自领域特点鲜明:
头部贡献者:“一只黑Q”(184)和**“哔哩哔哩英雄联盟赛事”**(119)占据前两位,说明游戏和赛事相关内容受欢迎,吸引了大量观众。
多元化内容:“绵羊料理”(68)以美食为主,“他说电影”(59)则专注电影解读,展现了不同主题对用户的吸引力。
个人品牌与知识传播:“凉风Kaze”(51)、“老师好我叫何同学”(28)、“硬核的半佛仙人”(28)等知名创作者通过高质量内容积累了稳定的粉丝群体。
新兴领域:“科技边界TE”(37)等作者表现亮眼,表明科技类内容持续受到关注。
这些创作者通过多样化的内容满足了观众对游戏、美食、知识和娱乐的多方面需求。
(四)热门关键词
实现热门关键词词云图从数据集中提取关键词及其出现频率,形成字典结构,确保数据量适合词云图展示。
最终图表能够直观呈现关键词的受欢迎程度及其分布。
运行结果如图14:
图 14 运行结果
从词频分析结果来看,以下特征十分明显:
高频关键词聚焦热点内容:“英雄”(186)、“随机”(165)、“科技”(162)和**“联盟”**(141)占据榜首,表明科技、游戏、英雄联盟等内容深受用户喜爱,具有较高传播性和观众黏性。
娱乐与流行趋势:“动漫”(108)、“动画”(96)、“柯南”(51)、“猫和老鼠”(23)等表明经典IP与流行动画仍是热门话题。
情绪化和互动性词汇:如**“离谱”(89)、“终于”(60)、“没想到”**(46)等具有情感共鸣的词汇频繁出现,反映用户喜爱讨论和表达惊喜的内容。
实用与趣味:“教程”(25)、“知识”(21)等关键词表明教育类、科普类内容有一定市场需求。
高频词汇反映了观众对娱乐性、互动性和知识型内容的广泛关注,平台内容生态多元化。
(五)时间序列分布
实现时间序列分布图的步骤,整理数据集,包含“发文日期”和“视频数量”,并按时间排序。将类别数据分组处理。最终图表清晰展现不同类别的视频发布数量随时间的变化趋势。
运行结果:
图 16结果
从图中可以看出,不同类别视频的发布数量在时间维度上呈现出一定的规律性和波动性:早期(2013-2016年)视频数量较少,可能与平台发展初期用户数量有限有关,随后逐步增长。不同年份和时间段的视频数量存在峰值,可能受热点事件、节假日或平台推广活动影响。动漫、舞蹈等类别表现出一定的持续性,表明受众稳定,内容创作活跃。这种分布反映了用户需求和内容生态的动态变化。
(六)热门视频播放和互动数据聚类分析
做聚类分析首先需要确定聚类数。轮廓系数法用于确定聚类分析中的合适簇数。在本项目中,通过计算不同簇数下的轮廓系数,来评估聚类结果的质量。具体实现步骤如下:选择一定范围内的簇数,例如从2到15。对于每个簇数,使用K-means算法进行聚类,并计算对应的轮廓系数。将每个簇数下的轮廓系数绘制成曲线图,以便观察整体趋势和最优簇数的选择。根据轮廓系数曲线图,选择具有最高轮廓系数的簇数作为最佳簇数。其值范围为[-1, 1]。较高的轮廓系数表示样本与所属簇内的样本相似度高,与其他簇间的样本相似度低,即聚类结果较好。而较低的轮廓系数则表示聚类结果不够理想。
运行结果:
图 19结果
如图19所示,最优聚类簇不存在。此外还可以通过手肘法进行佐证。手肘法(Elbow Method)是一种常用的方法,用于帮助确定最佳的聚类数量(K 值)。实现步骤:
1、计算簇内离差平方和(SSE):首先,对不同的聚类数量(K 值)进行循环计算,每个 K 值对应的 SSE 表示所有数据点到其所属簇中心的距离平方和。
2、绘制折线图:将 K 值与对应的 SSE 组成折线图,通常随着 K 值的增加,SSE 会逐渐减小。
3、找出“拐点”:手肘法的关键在于找到折线图中的“手肘点”,即随着 K 值增加,SSE 下降速度明显变缓的位置。
手肘法通过观察 SSE 随 K 值变化的趋势,帮助确定最合适的聚类数量。手肘点通常对应于最佳的 K 值,可以避免过度聚类或欠聚类的情况。手肘法有助于理解数据的内在结构和聚类情况,提供了一种直观的方式来评估数据的聚类效果。
通过手肘法,能够更好地理解数据的聚类情况,选择最佳的聚类数量,优化聚类分析的结果,为进一步的数据解读和决策提供支持和指导。如下图手肘法可知,最佳聚类数为3。
图 20结果
根据选定的簇数,使用K-means算法进行聚类分析。在经过标准化处理后的数据上进行聚类,得到每个样本所属的簇标签。
数据降维和可视化展示:为了更好地展示聚类结果,将数据降维至二维空间,并利用t-SNE算法进行降维。然后,使用plot_kmeans_clustering函数绘制降维后的数据散点图,并根据聚类结果进行着色,对歌单互动数据进行聚类分析,可以发现不同样本之间的相似性和差异性,从而对歌单进行分类进行分析等,为歌单推广、创作等提供决策支持。如图所示
图 22结果
图 23结果
(七)热门视频标题网络语义分析
网络语义分析通过构建词语之间的关系图来揭示文本中的语义关联。使用 CountVectorizer 对文本数据进行分词和词频统计,得到一个词频矩阵。然后,通过 TruncatedSVD(即潜在语义分析,LSA)降维,将高维的词频矩阵转化为低维表示,捕捉文本中的潜在语义结构。接着,利用 Normalizer 标准化数据,以便提高模型的稳定性和效率。这种网络语义分析方法有助于从大量文本数据中提炼出关键词及其内在联系。
结果如下:
图 28 网络语义分析图
通过对热门视频标题的语义分析,可以发现以下特点:
主题多样化:标题内容涉及英雄、科技、动漫、游戏、生活方式等多个领域,表明用户兴趣广泛。
情绪化和吸引力:关键词如“最强”“离谱”“没想到”等表现出强烈情绪或悬念,吸引用户点击。
热点关键词:如“全球”“中国”“总决赛”等体现热点事件或区域特色,说明相关内容具有较高关注度。
娱乐与互动:标题中“搞笑”“盘点”“推荐”等常见,表明用户偏好轻松、有趣、互动性强的内容。
人性化和场景化:词语如“男人”“小伙”“妹子”以及描述具体场景的“开车”“测试”等增强了代入感,符合用户的实际体验需求。
整体来看,标题设计紧扣热点和用户心理,助力视频的传播与关注。
七、结论与建议
(一)结论
通过对B站热门视频的分析,可以总结出以下结论:
视频数量随时间波动:从时间分布来看,B站热门视频数量逐年增长,特别是在特定年份、假期或热点事件期间,视频数量会出现显著峰值。这表明B站内容创作与用户需求之间存在动态互动,平台影响力逐步增强。
内容多元化:热门视频涵盖了多个主题,如动漫、科技、游戏、生活方式和全球热点,显示出B站用户群体的兴趣爱好广泛,内容消费需求多样化。
标题具备吸引力:热门视频的标题往往带有强烈的情绪化表达(如“最强”“离谱”“没想到”)和悬念设计,结合热点词汇(如“中国”“全球”“总决赛”)及场景化描述(如“测试”“开车”),精准抓住用户注意力,提升点击率和传播度。
平台特色突出:B站依托自身二次元、游戏、技术宅等垂直领域的优势,结合娱乐化和互动性强的内容形式,进一步增强了用户粘性和社区归属感。
(二)建议
优化发布时间策略:通过数据分析锁定流量高峰期(如节假日、热点事件发生时段),指导UP主合理规划内容发布时间,从而提升视频曝光率和观看量。
增强内容垂直化发展:针对热门领域(如动漫、科技、游戏),扶持优质UP主和原创内容,深化垂直领域布局,进一步满足核心用户需求,巩固内容生态优势。
加强标题优化指导:提供基于数据的标题优化建议,例如融入更多情绪化关键词和热点词汇,突出场景化描述,同时避免过度夸张,确保标题与内容一致,维护平台健康生态。
聚焦用户多样化需求:持续鼓励多元内容创作,平衡垂直领域和大众兴趣的内容分布。同时,关注新兴领域(如AI、环保、健康),吸引更多新用户,扩大平台受众群体。