2023软工K班个人编程任务

戴雨晴102101211 2023-09-14 23:25:30

链接:https://github.com/dai102101211/-/tree/main

一、PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划4030
· Estimate· 估计这个任务需要多少时间4030
Development开发9001040
· Analysis· 需求分析 (包括学习新技术)200300
· Design Spec· 生成设计文档6040
· Design Review· 设计复审2030
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)2030
· Design· 具体设计200240
· Coding· 具体编码180180
· Code Review· 代码复审6040
· Test· 测试(自我测试,修改代码,提交修改160180
Reporting报告120100
· Test Report· 测试报告3020
· Size Measurement· 计算工作量3030
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划6050
合计10601170

二、任务要求的实现

(2.1) 项目设计与技术栈。从阅读完题目到完成作业,这一次的任务被你拆分成了几个环节?你分别通过什么渠道、使用什么方式方法完成了各个环节?列出你完成本次任务所使用的技术栈。

本次任务分为六个环节,分别是网页处理、多页弹幕提取合并、数据处理与保存、数据分析与统计、数据整理与可视化
1.网页处理:使用Python的爬虫库(如re,time,requests)以及Edge的处理库from msedge.selenium_tools import EdgeOptions, Edg来获取b站页面的HTML
2.多页弹幕提取合并:解析HTML的BV号,并转化为oid号,得到前300个视频弹幕网址
3.数据处理与保存:将数据弹幕数据的时间与数据文本使用csv库保存到csv文件中,为下一步数据分析与统计做准备
4.数据分析与统计:用python的数据库(如pandas库)进行读文件,运用collections 库与csv库进行弹幕数量前20的统计
5.数据整理与可视化:运用jieba、wordcloudmatplotlib.pyplot进行弹幕数据统计,词云图的绘画

(2.2)爬虫与数据处理。 说明业务逻辑,简述代码的设计过程(例如可介绍有几个类,几个函数,他们之间的关系),并对关键的函数或算法进行说明。

我将数据保存前的步骤,与数据结果分析,分为两个界面进行编写,所以有两个主函数,四个函数,分别是进行网页获取,弹幕分析,弹幕数量前20的整理,与词云图的生成

  • 网页提取HTML,得到BV号
    运用主函数的网页html链接,调用get_bv函数进行对edge浏览器中的b站网页BV提取,并对提取到的BV进行去重,得到真正需要爬虫的网页信息

    img


    img

  • 利用BV号,得到oid号,并进行弹幕数据分析
    先提取前300个视频,再利用上图get_bv得到的BV号放入合适的位置,构造弹幕请求地址,再利用requests库,向b站该网址进行请求信息,最终利用json提取到网址内oid信息,并用正则解析300个网页弹幕的时间与弹幕文本

    img

  • 收集数据
    由上图已知弹幕信心,用csv库将弹幕时间与文本数据写入csv文件中

    img

  • 数据分析与可视化
    将csv中数据读出,再用Counter进行数据的数量处理,进一步得出弹幕数量前20的csv文件,最后将弹幕句子进行拆解,得到词云图

    img


    img


    img

(2.3)数据统计接口部分的性能改进。记录在数据统计接口的性能上所花费的时间,描述你改进的思路,并展示一张性能分析图
(2.4) 数据结论的可靠性。介绍结论的内容,以及通过什么数据以及何种判断方式得出此结论

利用Counter得出弹幕数量前20的csv,得出除去数字,大部分是坚持抵制日本排污,要保护海洋;并且这个数据是基于b站的综合排序前300个视频得出的弹幕数据,所以数据庞大,即具有可靠性

img

(2.5) 数据可视化界面的展示。在博客中介绍数据可视化界面的组件和设计的思路。

利用jieba,wordcloud,matplotlib.pyplot进行弹幕拆解,词云图的制作,以及词云图保存

img


img

三、心得体会

这次爬虫,是我从来没有接触过的东西,在短短的10天里,学到了许多,如:python的使用,爬虫的函数,数据的采集,
词云图制作等
爬虫:本次实践,意识到了edge与谷歌的网站区别,edge的爬虫有一个属于自己的库进行读取网页html,而谷歌无需;并且在爬虫时,遇到了b站的反爬虫机制,这个问题困扰我的时间最久;也因为这个反爬虫机制,导致每次爬虫视频数量可能不会相同
数据解析保存:这次作业让我知道了数据分析有很多方法,在这里头我使用正则re,虽然正则要时间与文本一起读取才可,而xpath与css虽然可以单独读取文本,但是xpath与css形成的csv数据处理起来较麻烦;这也是性能较低的原因
数据解析保存:词云图也是很神奇
我会再继续努力,在这个方面再学习,争取学到更多知识

...全文
44 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

117

社区成员

发帖
与我相关
我的任务
社区描述
2023福州大学软件工程K班
软件工程 高校 福建省·福州市
社区管理员
  • kevinkex
  • Devil angel
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧