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基础这点让我步履维艰,但我通过主动查找资料,寻找视频学习操作,向同学学习,完成了多数任务。我从基础做起,当我成功将一个视频的弹幕提取到文档中,并且绘制出词云图时,这给我的成就感是不言而喻的,只后循序渐进进行多个视频的弹幕爬取。另一方面我也深感自己的学识和技能粗浅,过程中也遭遇了不少的困难,我也见识到实践的挑战极大,前方的未知令我压力倍增,所幸我还能通过各种渠道解决多数难题。这次作业让我在实践方面有了比较明显的提升,但我投入的时间还是较少,整个流程显得很粗糙,总体上仍然没理清一些部分的根本原理,之后要好好整理知识,争取下次做得更好。
...全文
31 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

108

社区成员

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

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