2023秋软工实践个人作业二

这个作业属于哪个课程2023秋-福州大学软件工程
这个作业要求在哪里2023秋软工实践个人作业二
这个作业的目标学习爬虫,tkinter库创建GUI界面,Chatgpt框架生成,copilot代码辅助
学号102299210

1. Github代码库

github仓库-luogu

2. 项目介绍

我把本次的作业拆解成了几个步骤:

  1. 编写爬虫程序,使用request,beautifulsoup库爬取洛谷题目。
  2. 编写爬虫程序,将爬到的题目以markdown文件保存下来。
  3. 使用TKinter库编写GUI图形界面。

首先配置copilot,按照b站教程。
其次,询问Newbing给出合适的方向。但实际上newbing不是很好用…后面换成了chatgpt,果然还是ai一哥好用。
查看 洛谷robots协议
洛谷robots
从robots协议我们得知,洛谷是具有反爬虫机制的。因此用了time.sleep()函数,降低爬取频率,以免触发反爬机制。

接下来研究洛谷网站的url:
因为洛谷网页是前后端分离编写的,所以架构非常规范。很容易想要的内容推出对应的url。
https://www.luogu.com.cn/problem/list?difficulty=3&tag=&page=1为例:

  • difficulty是难度
  • tag是对应的标签
  • page是网页页码

很容易更具规律得知难度是对应着数字0-7的。

① 代码逻辑:

这段代码实现了一个用于爬取洛谷(Luogu)题目的命令行工具。以下是代码的简要介绍:

  1. 映射难度等级:定义了一个字典difficulty_dict,用于将数字难度等级映射到文本表示,方便用户选择。

  2. navigateToLuoguDifficultyPage函数:该函数接收三个参数,分别是难度等级、关键词和题目数量。它根据用户提供的难度等级构建洛谷网页的URL,发送HTTP请求获取页面内容,然后使用Beautiful Soup解析页面,提取题目信息。根据关键词和数量的条件,保存满足条件的题目的Markdown内容为文件。

  3. getProblemMarkdown函数:接收一个题目的URL,发送HTTP请求获取题目页面的HTML内容,然后使用Beautiful Soup解析页面,提取题目的Markdown内容。

  4. saveProblemMarkdown函数:接收一个包含题目信息的字典,根据题目的编号和标题创建一个文件夹,并将题目的Markdown内容保存为一个Markdown文件。

  5. 主程序部分:用户在命令行中输入难度等级、关键词和题目数量,然后调用navigateToLuoguDifficultyPage函数开始爬取。

总体而言,这段代码实现了一个基本的洛谷题目爬取工具,用户可以根据难度等级、关键词和数量的要求来获取题目的Markdown内容并保存为文件。这可以帮助用户离线查看和管理洛谷上的题目。

② 图形界面

在这里插入图片描述
包括难度选择,关键词搜索,题目数量。

* 未完成的功能——标签选择

本来想为Jason哥弄一个可以多样选择的标签栏。然后发现时间实在是来不及,没能完成这个开发。但感觉自己花了很多时间,还是想在博客里展现一下。

  1. 我先是找到了一些规律,洛谷的标签其是对应着url中的tag参数
    在这里插入图片描述
    在这里插入图片描述
  2. 因此我手动收集了每个标签对应的tag值,并让chatgpt帮我写一个简单的工具程序转换成json格式。
    在这里插入图片描述
  3. 写一个函数让用户选择标签,然后根据json文件找到对应的tag值,跳转对应url。
    (未完成)

3. 测试样例

爬虫测试:

  1. 测试样例1(难度+关键词+题目数量:每个变量都配全)
    在这里插入图片描述
    生成的markdown
    在这里插入图片描述
  2. 测试样例2
    在这里插入图片描述
    生成的markdown
    在这里插入图片描述
  3. 测试样例3(不配关键词参数) 在这里插入图片描述
    生成的markdown:
    在这里插入图片描述

4. ALGC

子任务预估哪些部分使用AIGC实际中哪些部分使用AIGC
HTTP请求发送和响应处理部分使用request库的使用
页面解析bs4库的应用提供了几个函数,beautifulsoup,re正则式表达等
数据预处理和存储部分使用json转换python的编写
反爬虫提供方法timesleep和header生成
前端设计提供框架

AIGC技术的优点

  1. 快速编写代码
    比如一个简单的爬虫框架
  2. 可以辅助代码思路
    将一个复杂的任务进行拆解。

AIGC技术的缺点

  1. 对于问题的解决不够明确,比如洛谷的网页就需要人类去观察,chatgpt还不能做到找规律。很多函数模块的编写并不能自行生成,需要人类提供引导(或者说是给出创新的idea)。
  2. 理解问题上还是和人类有很大的差距的。提出需求后并不能给出让人很满意的答案。

AIGC技术适合用方面

  1. 辅助编程:使编程任务便利,有助于程序员自动生成代码片段、函数、注释等,加速编码过程,提高开发效率
  2. 自动代码完成:可用于自动完成代码,提供代码建议,减少手动编写重复代码的工作
  3. 代码修改和编辑:对所写代码的语法和思路提供帮助,检查拼写和语法错误,同时辅助思路

AIGC技术不适合实现功能

  1. 编写复杂任务:不适合编写大规模或复杂的任务,提供的代码需求实现不完整,不适用于复杂开发。
  2. 无程序员编程:对代码的提供的帮助有限,需要有经验的程序员辅助该工具才能实现任务的全部要求。

5. 个人心得

学会的内容:

  1. 学会分析网站数据流,实现初始URL地址的获得。
  2. 用AIGC技术来自动生成爬虫需求文档和URL地址。
  3. 独立学会对tkinter库的简单使用。
  4. 利用Tkinter库来制作GUI页面,实现数据的展示和交互。
  5. 扩展了对python语言的学习。
  6. 基于BeautifulSoup对解析网页内容或JSON数据,提取需要的数据字段。

心得体会:

本次软工挺有成就感的,因为在编写爬取代码的时候感觉自己的思路非常清晰,不过实际做出来的总是和脑袋里想的有很大的差距。
这次的软工真的学到了很多东西也真的非常辛苦…熬了好多夜,眼睛视力大降,但是碍于开发能力太有限了,确J实没有能够很好把握住项目的完整度。但是我能说我确实尽我所能了(T^T),下次开发要注意一下时间a地把控!!!
Jason哥刷题辛苦了,记得劳逸结合啊!

6. 个人总结

PSP表格

任务预估耗时(min)实际耗时(min)
需求分析4560
计划1520
开发16*6018*60
UI美化3*602*60
test6090
总结及优化方向总结1525
Total12751395

个人评价

  • 做的好的地方有
  1. 对新技术的探索和应用
  2. 对编程和爬虫的基本知识和技能的掌握和运用
  3. 实现了数据的展示和交互
  • 值得改进的地方
  1. 时间的把控真的很重要!!!本来以为可以用AI的话感觉效率会大大提高,但实际上花了非常多的时间去跑它生成的代码,报错地方太多了,参数也不准确,要花很多时间去找bug和测试。
  2. 学计算机真的要找同学多问问,多交流,不能一个人坐在电脑前苦思冥想。有时候问一下其他同学感觉豁然开朗,也节省了不少时间!

参考资料:
【python爬虫】爬取洛谷习题并转为md格式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
2023年的uibot中级实践题是一个集成了人工智能和自动化技术的全新挑战。这道实践题将要求参赛者使用uibot平台完成一个短视频应用的自动化测试脚本。 参赛者需要先了解短视频应用的功能和用户行为,以便能够设计出充分的测试用例。测试用例将覆盖应用的各个功能模块和关键性能指标,测试步骤需要经过仔细的设计和规划,确保测试的准确性和全面性。 在测试脚本编写上,参赛者需要根据测试用例使用uiruntime API完成测试脚本的编写。测试脚本需要实现自动的操作和判断,以模拟真实的用户场景。在测试过程中,参赛者需要记录测试结果、分析测试数据,识别问题并提出解决方案。 除了测试脚本的编写和实施,参赛者还需要掌握uibot平台的高级功能和API,以确保测试脚本的质量和稳定性。在完成实践题的过程中,参赛者还需要在团队中协作,交流经验,分享技术和思路。 在实践题的评分标准上,平台性、自动化、可重复性、稳定性和测试结果分析是考核的重点。参赛者需要通过严格的自我评估和审查,确保测试脚本的质量和符合标准,并在最短时间内完成测试流程,达到预期的测试目标。 通过这道实践题的挑战和考核,参赛者将能够提升测试技能、加速测试流程,提高测试效果和稳定性,进一步深入了解uibot平台的功能和特点,为自己的职发展打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值