2023软工K班个人编程任务

徐祥坤102101438 2023-09-14 23:36:36

1.(1.1)在Github仓库中新建一个学号为名的文件夹,同时在博客正文首行给出作业Github链接。 

https://github.com/102101438/102101438.git

一、PSP表格

(2.1)在开始实现程序之前,在附录提供的PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间。

(2.2)在你实现完程序之后,在附录提供的PSP表格记录下你在程序的各个模块上实际花费的时间。

 

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

二、任务要求的实现

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

  • 在本次任务中,我把任务分为了五个环节:设计任务流程,学习相关知识,设计代码、编程、整理结果。
  • 通过视频网站和csdn以及和同学的交流,了解和学习爬虫所需要的python知识,以及爬虫的基本流程,最终完成各项环节。
  • 技术栈:requests,re,bs4,jieba等。

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

  • 总体思路时先获取一页视频的链接并获取bv号
  • 更改视频链接可以找到弹幕地址的链接
  • 进入弹幕地址就能找到该视频的所有弹幕
  • 提取弹幕后生成词云图

一、通过get请求获取搜索界面的视频的html,再获取视频的url

def get_video_url():
#获取视频html
    video_url = []
    if page == 1:
            url = 'https://search.bilibili.com/all?keyword=%E6%97%A5%E6%9C%AC%E6%A0%B8%E6%B1%A1%E6%9F%93%E6%B0%B4%E6%8E%92%E6%B5%B7&from_source=webtop_search&spm_id_from=333.1007&search_source=3'
        else:
            url = 'https://search.bilibili.com/all?vt=46889243&keyword=%E6%97%A5%E6%9C%AC%E6%A0%B8%E6%B1%A1%E6%9F%93%E6%B0%B4%E6%8E%92%E6%B5%B7&from_source=webtop_search&spm_id_from=333.1007&search_source=3&page={page}&o={(page-1)*20}'
        headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76'
        }
        response = requests.get(url=url, headers=headers)
        response.encoding = 'utf-8'
#获取弹幕地址
        content_list = re.findall('bvid:"(.*?)"', response.text)
        video_url += content_list
    return video_url

二、改变链接进入可找到弹幕地址的界面

def get_dm_url(video_url):
    dm_url=[]
    for bv in video_url:
#改变链接
        url='https://www.ibilibili.com/video/'+bv
        dm_url.append(url)
    return dm_url

三、进入弹幕地址

def get_danmu_url(dm_url):
    danmu_url=[]
    for url in dm_url:
        response = requests.get(url=url)
        response.encoding = 'utf-8'
        dan_url = re.findall('<a href="(.*?)" class="btn btn-default" target="_blank">弹幕</a>', response.text)
        danmu_url += dan_url
    return danmu_url

四、将弹幕地址中的弹幕保存到文档中

def get_danmu(danmu_url):
    for url in danmu_url:
        response = requests.get(url=url)
        response.encoding = 'utf-8'
        danmu_list = re.findall('<d p=".*?">(.*?)</d>', response.text)
        for danmu in danmu_list:
            with open('dm.txt', mode='a', encoding='utf-8') as f:
                f.write(danmu)
                f.write('\n')

五、生成词云

import jieba
import wordcloud
f = open('dm.txt', encoding='utf-8')
txt = f.read()
string = ' '.join(jieba.lcut(txt))
#词云图格式
wc = wordcloud.WordCloud(
    width=700,
    height=700,
    background_color='white',
    font_path='msyh.ttc',
    scale=15,
)
wc.generate(string)
wc.to_file('dmcy.png')

(3.3)数据统计接口部分的性能改进。记录在数据统计接口的性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(例如可通过VS /JProfiler的性能分析工具自动生成),并展示你程序中消耗最大的函数。

每个函数花费时间各有不同

 

 

 

 

(3.4)数据结论的可靠性。介绍结论的内容,以及通过什么数据以及何种判断方式得出此结论。

  • 根据词云图可以看出,“保护海洋”,“保护地球”的呼声最高,可见大家对于排放核污水是极其反对的,表达出人们爱护环境,追求美好世界的诉求,日本的做法无疑是在开历史倒车。

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

  • 通过jieba对弹幕进行分词,再利用wordcloud生成了如下词云图:

三、心得体会

(4.1)在这儿写下你完成本次作业的心得体会,当然,如果你还有想表达的东西但在上面两个板块没有体现,也可以写在这儿~

  • 这次的作业对我来说是一个空前的挑战,没有python基础这点让我步履维艰,但我通过主动查找资料,寻找视频学习操作,向同学学习,完成了多数任务。我从基础做起,当我成功将一个视频的弹幕提取到文档中,并且绘制出词云图时,这给我的成就感是不言而喻的,只后循序渐进进行多个视频的弹幕爬取。另一方面我也深感自己的学识和技能粗浅,过程中也遭遇了不少的困难,我也见识到实践的挑战极大,前方的未知令我压力倍增,所幸我还能通过各种渠道解决多数难题。这次作业让我在实践方面有了比较明显的提升,但我投入的时间还是较少,整个流程显得很粗糙,总体上仍然没理清一些部分的根本原理,之后要好好整理知识,争取下次做得更好。
...全文
142 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
摘 要 随着互联网影视产业的迅速发展,电影资源呈指数级增长,类型也愈加多样化,但是用户面对如此庞大的影片库时,会遇到信息过载、筛选效率低下、观影决策成本高这些难题,而传统的电影平台大多只是对基本的分类和热度进行展示,并没有提供个性化的推荐服务,社交互动以及一体化管理的能力也比较薄弱。 该系统使用的是Spring Boot+Vue前后端分离的方式进行开发,设计并开发了一个电影推荐和评论系统。开发系统中存在三个问题,即无法准确地判断出用户的喜好、电影推荐功能上线之初没有用户数据,因此推荐效果不佳、大量用户同时评论打分时系统容易出现不稳定的情况。为了克服上述问题,本文查阅相关资料,不断迭代开发原型,并进行实际测试,完成整个系统的全部过程,即系统需求分析、架构设计、功能开发、系统测试。系统分为普通用户和管理员两种身份,具有注册登录、电影浏览、电影推荐、评分评论、影片收藏、个人中心、后台管理等功能,采用结合用户喜好和电影热度的简单推荐方式,提供热门电影推荐和个性化推荐,很好地解决了推荐功能初始没有数据、数据较少的问题。项目用接口来完成前后端的数据交互,使用MySQL数据库存储用户、电影、评论、收藏等各种数据,并且加入权限验证、密码加密等安全措施,保证系统安全稳定并且便于后期扩展。除此之外,系统还增加了电影资讯查看、首页轮播图设置、编辑资讯等功能,使整个电影平台的服务更加全面,使用更加高效。经过全面的功能测试、接口测试和性能测试,系统各个模块运行稳定,推荐接口响应时间小于300ms,主要的互动操作成功率大于98%,可以大大降低用户的选片成本,提高观影决策的速度和社区互动的效果。 本文给出一套轻量级、易部署、可复用的电影推荐类Web应用工程实现方案,相比于传统的单一列表展示型平台,个性化服务、社交互动体验和后台管理效率都有明显的提高,可以给影视文化数字化传播、推荐算法轻量化工程实践

118

社区成员

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

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