2023软工K班个人编程任务

魏燕清102101110 2023-09-14 23:29:39

GitHub

一.PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划3040
-Estimate估计这个任务需要多少时间16201335
Development开发14401195
-Analysis需求分析(包括学习新技术)420300
-Design Spec生成设计文档3030
-Design Review设计复审6030
-Coding Standard代码规范6035
-Design具体设计6060
-Coding具体编码660600
-Code Review代码复审6020
-Test测试(自我测试,修改代码,提交修改)90120
Reporting报告9060
Test Repor测试报告6020
Size Measurement计算工作量3060
合计16201375

二.任务要求的实现

2.1项目设计和技术栈

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

这一次的个人编程任务拆分成了三个环节;分别是获取数据、解析数据、数据可视化。
通过查找B站、CSDN、博客园和Github资源完成各个环节。
技术栈:Python+HTML+JS

2.2爬虫与技术处理

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

业务逻辑:
这次任务总共需要爬取300个视频的弹幕数据,在web浏览器上一个页面可以显示30个视频,所以我们总共需要爬取10页。首先,获取视频的url链接;然后得到该视频的cid号,最后进行解析数据和保存弹幕。

第一部分:获取搜索页面url。

def get_next_video_url(search_url):
    # 发送GET请求获取搜索页面内容
    response = requests.get(search_url)
    if response.status_code == 200:
        html_content = response.content

        # 解析HTML内容
        soup = BeautifulSoup(html_content, 'html.parser')

        # 查找视频链接元素
        video_link_element = soup.select_one('.ajax-render')

        if video_link_element:
            # 获取视频链接
            video_url = video_link_element['href']
            return video_url

第二部分:获取视频cid号

def get_cid_from_url(video_url):
    # 从URL中提取BV号
    bv_match = re.search(r"(BV\w+)", video_url)
    if bv_match:
        bv_number = bv_match.group(1)

        # 构造API请求URL
        api_url = f"https://api.bilibili.com/x/player/pagelist?bvid={bv_number}"

        # 发送GET请求获取API响应
        response = requests.get(api_url)
        if response.status_code == 200:
            # 解析API响应JSON数据
            json_data = response.json()

            # 获取第一个视频的cid号
            if 'data' in json_data and len(json_data['data']) > 0:
                cid = json_data['data'][0]['cid']
                return cid

第三部分:提取弹幕

def save_bilibili_danmaku(cid,save_path):
    # 构建获取弹幕数据的API链接
    api_url = f"https://comment.bilibili.com/{cid}.xml"

    # 发送GET请求获取弹幕数据
    response = requests.get(api_url)
    if response.status_code == 200:
        danmaku_content = response.content.decode('utf-8')

        # 解析XML格式的弹幕数据
        root = ET.fromstring(danmaku_content)
        danmaku_list = []
        for d in root.findall('d'):
            danmaku_list.append(d.text)

        # 将弹幕数据保存到文件
        with open(save_path, 'w', encoding='utf-8') as f:
            for danmaku in danmaku_list:
                f.write(danmaku + '\n')

        print(f"Danmaku data has been saved to {save_path}")
    else:
        print("Failed to get the danmaku data.")

第四部分:数据可视化

def Word_cloud():
    f = open('danmaku.txt', encoding='utf-8')
    text = f.read()
    print(text)

    # 2. 分词 把一句话 分割成很多词汇
    text_list = jieba.lcut(text)
    print(text_list)
    # 列表转成字符串
    text_str = ' '.join(text_list)
    print(text_str)

    # 3.词云图配置
    # img = imageio.read('小测.png')
    wc = wordcloud.WordCloud(
        width=700,
        height=700,
        background_color='white',
        font_path='msyh.ttc',  # 字体文件:微软雅黑
        # mask = img,
        # 设置 停用词
        stopwords={'的', '了','\n'}
    )
    wc.generate(text_str)
    wc.to_file('词云图.png')

2.3数据统计接口部分的性能改进

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

2.4数据结论的可靠性

介绍结论的内容,以及通过什么数据以及何种判断方式得出此结论。
通过对爬取到的弹幕进行整理分析,可以知道我国大部分网民对日本将核污染水排海持反对态度,并且呼吁大家要保护海洋。

2.5数据可视化界面的展示

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

词云图


通过使用python中的jieba进行分词,然后利用wordcloud生成词云图
三.心得体会

通过这次作业,我深刻地认识到自己的编程能力有多么多么的欠缺....一开始就知道这种题目肯定要用Python写,但是我之前根本没学过.然后在这两周的时间里恶补(速成,然后在网上各种搜索有没有可以利用的差不多的案例.反正最后终于勉强算是完成了吧.
通过这次作业 对python有了一点点了解,学到了很多新东西/(ㄒoㄒ)/~~

...全文
138 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
魏燕清102101110 2023-09-14
精选
  • 打赏
  • 举报
回复

img

魏燕清102101110 2023-09-14
  • 打赏
  • 举报
回复

img

内容概要:本文围绕【语音增强】领域中的组稀疏信号去噪问题展开研究,提出了一种结合非凸正则化与凸优化理论的去噪方法,旨在提升含噪语音信号的可懂度与质量。文章系统阐述了组稀疏信号模型的构建机制,引入非凸正则项以更精确地逼近理想稀疏性,克服传统凸正则化在稀疏表达上的局限性,并采用高效的凸优化算法保障模型求解的稳定性与收敛性。整个算法流程在Matlab平台上完整实现,涵盖语音信号预处理、稀疏系数求解、去噪重构等关键环节,并配套提供可复现的代码资源,便于研究人员进一步验证与拓展。该方法在保留数学可处理性的同时显著增强了去噪性能,尤其适用于低信噪比环境下的语音恢复任务。; 适合人群:具备一定信号与系统、数字信号处理理论基础,熟悉稀疏表示与最优化方法,且拥有Matlab编程能力的研究生、科研人员及从事语音增强、音频工程、通信系统等相关领域的工程技术人员。; 使用场景及目标:①应用于语音通信、智能助听设备、语音识别前端等对语音质量要求较高的实际系统中;②作为高校课程或科研项目中的教学案例,帮助深入理解稀疏表示、非凸优化与凸优化算法的融合机制;③为后续研究非凸正则化在图像去噪、生物医学信号处理等其他稀疏恢复问题中的性能优势提供理论依据与实现范例。; 阅读建议:建议读者结合所提供的Matlab代码逐模块分析,重点理解非凸正则项的设计动机及其对稀疏性的增强作用,深入掌握优化求解过程中迭代算法的实现细节;同时可通过调整正则化参数、测试不同噪声类型(如白噪声、车间噪声)与强度的语音信号,系统评估算法的鲁棒性、收敛速度与去噪效果,从而全面把握该方法的优势与潜在局限。
内容概要:本文系统介绍了节点不连续伽辽金方法(NDG)在求解线性和非线性平流方程中的一维数值实现过程,并配套提供了完整的Matlab代码实现。该方法作为一种高精度、高分辨率的数值离散化技术,特别适用于对流主导的偏微分方程求解,在处理间断解和保持数值稳定性方面具有突出优势。文章详细阐述了NDG方法的核心理论基础,包括弱形式构造、局部基函数选取、数值通量处理、时间推进格式(如显式Runge-Kutta方法)以及边界条件的实施策略。通过多个典型算例(如线性对流、Burgers方程等)的仿真分析,充分验证了该方法在捕捉激波、避免非物理振荡及保持高阶精度方面的有效性。结合代码实践,读者可深入掌握NDG方法的算法设计与编程实现的关键环节。; 适合人群:具备偏微分方程数值解法、有限元方法或计算流体力学基础知识,熟悉Matlab编程语言,从事科学计算、工程仿真、应用数学或相关领域研究的研究生、科研人员及工程师。; 使用场景及目标:①用于高阶数值方法的教学演示与学习,加深对间断伽辽金方法的理解;②应用于流体力学、气象模拟、环境科学等领域中对强对流现象的精确数值模拟;③作为复杂物理系统仿真中对流项高精度离散化的核心技术支撑;④为科研工作者开发定制化求解器提供可复用的算法原型与代码参考。; 阅读建议:建议读者结合Matlab代码逐行调试与运行,对照理论推导理解每个模块的功能实现,重点关注数值通量、质量矩阵和刚度矩阵的构造过程。同时推荐参阅相关经典文献以深化对NDG方法数学理论和收敛性分析的理解,从而更好地将该方法迁移应用于自身研究课题中。

118

社区成员

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

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