admin 管理员组文章数量: 888399
【Python21天学习挑战赛】
活动地址:CSDN21天学习挑战赛
摘要:为了更好的了解大众对于生活中记录的短视频喜欢程度,分析出人们对于那种视频访问量更高。本篇报告使用Pycharm编译器对哔哩哔哩网站的综合热榜的排行爬取并将爬取的数据存储在Pycharm自带的SQL库中。Flask所构建的web框架,将获取的数据使用网页的方式让操作者可以更好的查看爬取的数据。最后用Echarts进行数据可视化分析,分析访问量以及up主统计信息,得出结论。系统爬取的数据清晰,页面功能按钮导航明确,操作也容易上手。这样会使数据分析工作整体化、规范化。
文章目录
- 一、引言
- 二、实践报告系统分析设计
- 2.1 需求分析
- 2.2 可行性分析
- 2.3系统模块操作流程设计
- 2.4数据库设计
- 2.5 网页设计
- 三、信息可视化系统的实现
- 3.1 爬取b站热榜
- 3.2 数据包装
- 3.3 数据库
- 3.4 数据可视化页面
- 四、常见问题
- 五、结束语
- 致 谢
一、引言
随着社会的发展,互联网的技术也越来越普及。传统的数据处理方式是人工审阅,人们只能通过打印文本的形式对数据分析;随着一段的时间发展,数据可以通过数据库的方式保存分析;但是在今天,我们每天需要处理的数据都是海量的,大数据就是在这样的背景下产生,它可以很好并高效的处理分析数据。哔哩哔哩热榜的视频是记录生活中好玩或者有趣的视频分享排行榜,他把成千上万的up主分享的视频通过访问量将排行前一百名的作者分享的视频形成榜单。通过对数据的爬取以及数据的可视化分析,把b站排行榜总的视频记录、访问量记录以及up主记录以网站的方式让操作者把晦涩难懂的数据呈现出来,而且还可以通过统计图对数据进行分析。Python对于大数据分析的能力很强,是市场上人们爬取数据的优先选择语言。ECharts作为主流的数据可视化的分析网站,可以将各种统计工具源码分享使用。这次实践报告将使用Python爬虫和Echarts数据可视化分析完成哔哩哔哩视频排行榜数据的可视化工作。
二、实践报告系统分析设计
2.1 需求分析
为了提供人们的生活质量,了解人们对于生活短视频分享的喜欢程度。将主流短视频分享平台的b站作为分析对象,爬取改网站的热榜视频排行,并将排行榜中的视频链接、视频名称、视频的up主以及视频访问量保存到数据库之后上传网页展示分析。
2.2 可行性分析
- (一)经济可行性:b站热榜视频排行系统使用的编译器是PyCharm,数据库用的是MySQL,这些软件都可以开源免费的使用。不仅可以降低耗费的精力和投入的资源,而且还可以减少开发系统的成本。系统跑起来对电脑的要求不高,普遍的计算机都可以运行该系统。运行环境证明该程序在经济上是普遍大众能接受的。
- (二)操作可行性:系统容易上手操作,界面展示可观易理解。不需要操作者很懂行,只要了解过电脑的用户都能上手操作。用户登录之后,按照模块对应的功能一步一步操作,就能运行程序。
- (三)法律可行性:系统使用的软件和技术都是开源的,不为谋取利益。系统所使用的图片以及一些相关文章介绍都是网上免费获取的资源,因此法律上是可行的。
2.3系统模块操作流程设计
使用者用PyCharm编译器运行系统。先在bilibili.py类中运行爬取b站热榜上的数据。然后在app.py这个类运行生成本地网页,在网页根据功能提示,查看想要获取的数据分析。操作流程图如图2-1所示。
2.4数据库设计
通过数据库创建一个bilibili.db数据库。里面包含四个属性,包含info_link保存视频链接,cname保存视频名称,ename保存up主的名字,rated保存访问量的数据。bilibili.db数据库表如表3-1所示。
2.5 网页设计
本次实践报告将通过网页的形式展示数据。用列表的方式把爬虫获取的排行榜里面相关信息展示出来。用柱状图展示访问量的数据分析。用扇形图展示up主和访问量之间的占比。
三、信息可视化系统的实现
本章节主要通过对数据爬取以及可视化分析的截图和运行程序的介绍。
3.1 爬取b站热榜
这次实践报告主要通过爬取b站热榜视频排行来分析数据。
获取网页链接之后,通过head模拟头部信息,向b站服务器发送消息。
3.2 数据包装
在上一步的网页爬取中把想要爬取的内容都记录下来。接着把爬取的HTML内容正则提取自己想要的内容‘视频链接’,‘视频名称’,‘up主’,‘访问量’。通过soup.find_all()遍历每一个所需内容的div,将获取的内容用data[]保存下来,每获取的一个文本就输出显示看看是否是自己想要的内容。
3.3 数据库
通过PyCharm创建并设计一个bilibili.db的表,把爬取b站热榜视频中的数据保存在SQL数据库中。
创建bilibili.db数据库表之后,将data[]里面的字典通过MySQL语句中的insert into插入到数据中。数据库表展示如图4-6所示。
3.4 数据可视化页面
(一)首页页面
首页是通过Flask构建web框架。搭建一个网站,通过链接导航可以去查看不同的页面展示不同的数据消息。首页网页代码如图4-7所示。网页首页效果如图4-8所示。
(二)排行统计页面
该页面的设计是为了将b站爬取的数据通过数据表格的形式向使用者展示。用MySQL的查询语句select * from bilibili将数据保存在data中,代码截图如图4-9所示。具体的页面展示如图4-10所示。
(三)访问量统计页面
该页面展示的是将爬取的访问量数据用柱状图展示出来。展示柱状图是利用Echarts中数据可视化库,让使用者可以更加清晰的了解b站热榜视频的访问量分布。柱状图的核心代码如图4-11所示。网页展示如图4-12所示。
(四)up主统计页面
该页面主要是使用扇形图的方式查看每一个up主依据访问量的大小所占的扇形图比例。使用者把鼠标移动到想要了解up主名称位置后会相应的弹出该up主发布视频的访问量数值。程序是查询bilibili表中的up主和访问量,然后在Echarts中找到想要的扇形图模板代码导入到word.html文件中。核心代码如图4-13所示。网页页面展示如图4-14所示。
四、常见问题
在本次报告的程序设计过程中也遇到许多问题,主要包括以及几点:
第一,正则提取过程中,将div里面的数据转换文本之后虽然会获取里面的文字,但是文字前后都有大量空格,不好保存在数据字典里面。解决方法:将里面的文字提取出来之后可以用strp()去掉前后空格。
第二,程序每运行一次,再次运行就会显示该程序产生的数据库表已经存在导致程序无法运行。解决方法:若出现本次错误,可以delete删除上次运行产生的数据表,但有的时候无法删除,此时可以重启编译器就可以删除了。
第三,数据可视化分析的时候每一次调试产生的页面都需要重新生成一个,太过麻烦。解决方法:在主程序里面的app.run()中添加debug=True,这样就可以每次修改之后,在原网页中刷新界面即可。
五、结束语
通过一段时间来的系统设计,我顺利完成了b站热榜视频排行可视化分析。在这个过程中我主要完成以下工作:
第一,分析一些带有榜单的网站,最终确定爬取b站的热榜视频排行。
第二,通过对热榜排行的HTML分析,正则提取我需要的视频链接、视频名称、视频发布的up主以及访问量。并保存到数据库中。
第三,通过Flask构建web框架,设计自己想要的网页展示爬取数据的可视化分析。
致 谢
第一次参与这么大系统的设计与实现。首先是个人完成,也是第一次把两个星期所学的知识全部综合起来,经验不足。其次,设计的过程中也有许多第一次接触的新知识,运用时不是很成熟需要改进。希望读者给个一件三连。
本文标签: Python21天学习挑战赛
版权声明:本文标题:【Python21天学习挑战赛】 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1693584845h230700.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论