系列文章目录
一 课程设计任务说明及总体设计说明
二 总体设计说明
三 核心功能与代码
四 问题与讨论
前言
记录回顾之前Python课程设计的点点滴滴
3.1.爬虫部分
3.1.1.爬虫核心代码说明
引入库为后续做准备
Requests用来获取网页数据
Json用来处理数据格式
Csv、sqlite3、xlwt用来存取数据
1.爬取数据
基本信息
链接的灵感也在这里介绍一下
首先我们打开b站热门排行榜(推荐用谷歌)
F12查看流量包
可以看到有一个流量包,点击过后
这不就是我们想要抓取的数据
不过在网页上的仍然是字符串格式
要处理为python能处理的字典嵌套列表格式
而且经过测试后,修改链接后面的参数ps是数量,pn是翻页
Pn范围为1-4,ps范围为1-50
我们想要获取所有热门视频,那就要设置ps为50,然后抓取所有页数(for循环解决)
然后对抓取的数据json处理为一个大列表里面有嵌套许多字典,并且数据格式要为utf-8.
评论
这边思路与爬取基本信息差不多
不过需要获取更多参数,比如bv号和oid,这样才能爬取特定视频下的评论
复制上面的bv号
输入后开始运行
3.1.2.数据情况
示例代码入上
爬取了共200个视频的情况
爬取时间如下
基本信息
评论
3.2.数据处理部分
3.2.1.数据清洗
对于自己想爬取的数据中
基本数据并没有什么缺失和遗漏
评论数据没有子评论挺可惜的,
不过主评论就能分析很多情况了,比如做成词云
3.2.2.数据分析及可视化
3.2.2 数据处理
通过前面得到的数据其实已经很好处理了,只需要遍历然后提取我们想要的数据
截取一部分来看
很明显,每个字典里还存在字典嵌套的情况,不过只要我们懂得访问相应的键名就能获得想要的数值
上图就是想要获取的各项数据类型,已经注释好了
我是用列表嵌套的方式来存储,每个小列表count存储一部视频相关信息,然后再全部存进datalist大列表里,本来还想要视频介绍,但是考虑到很多视频要么没有,要么就很长,影响后来的数据可视化观感所以就没有获取
数据存储
1)Excel
定义了一个saveData函数呈现效果图
(虽然排序了,但是其实我觉得不管从哪个数据类型来排都不客观,因为某些up主的视频质量不高只是因为粉丝数量庞大,后面csv文件会根据相同类型的视频进行排序)
2)数据库存储
用数据库来存储是方便后面的词云和网页表格作铺垫
也是定义函数,一个初始化数据库包括建表,另外一个就是将数据存储到表中
最终完成数据库的存储
对于评论词云代码较少
可视化展示
接下来是一个简单的可视化
运用flask框架在自己电脑上呈现网页效果
表格
这边只是从播放量进行排名,并不客观,仅供参考
然后我在每个up的名称出加上了各自的跳转超链接,想要看谁的视频直接点击up主名称就好,然后进入之后就可以获取相应视频的bv好为评论爬取做准备
比如我想看逗比的雀巢就可以直接点击了
图表
词云
3)csv存储
效果图
这里的综合评分就是点赞0.3 + 评论0.7
可以看到按照这样标准的综合评分效果并不好
下面这张图片是成功存储特定视频的评论包括时间和点赞量