第二次软工个人作业(还在更进一步完善…)
陈昕杨 102101324
这是我的github仓库链接:https://github.com/xinyang-Grind/Homework
1.先说说遇到的困难!!
- 最大的困难当然是还没有根本没学过爬虫TT
- 第二大的困难是根本没学过 tkinter
- 详细困难1:反爬机制
利用计时器 过一段时间再爬
或者部署虚拟ip以防止被重复识别
time.sleep(5) 五秒钟后再进行爬取 就非常简单啦 - 详细困难2:题解的爬取
题解的爬取需要利用洛谷本身调用的程序接口再进行网络请求
还有另一种方法 可以采用json格式再转化 但是效率相比上面就很低了得用cookie的方法
cookie = {
'login_referer': 'https%3A%2F%2Fwww.luogu.com.cn%2Fproblem%2FP1000',
'_uid': '115111',
'__client_id': '4f1bbbf98dfa'd'sfadsfa6e49a6c98727320089c851c18d53c',
'C3VK': 'aa6e71',
}
反爬结果展示
一共50条
标签为:入门+1
爬取结果(前50条):
2.前端展示
前端采用tkinter展示,用了一个比较简洁的界面进行展示,输入后点击就可以进行爬取
爬取结果
前端展示爬取结果
点击下拉框可以展示
存储结果
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
爬取md展示
附加
其中增加了题型与题目语言选择的选择 让我们可以更好的爬取
以及增加了黑夜配色 非常的cool !!
3.单元测试
在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。 程序单元是应用的最小可测试部件。
我的理解是:测试某个具体的函数,是否符合编写者的预期。
比如把p2输出来也算是一种输出
编写单元测试类如同Test就可以测试pureCNtext的函数是否正常
4.AIGC表格
我使用的是copilot
子任务 | 预估哪些部分使用AIGC | 实际中哪些部分使用AIGC |
---|---|---|
爬取题目 | 网页请求、header书写、md格式转化 | 网页请求 |
爬取题解 | 寻找源代码,网页请求 、md格式转化 | md格式转化 |
前端展示 | 以为都可以 | 发现不会写,可能是自己的表述有问题? |
使用感受:其实在解决一些具体问题上,copilot的使用非常简单,但是可能在精细活上,由于我们本身描述不够具体而且正确,导致copilot无法正常使用,因此我们应该得建立正常的问答方式,这样子有助于我们更好地编写程序
5.你学会了什么内容?有什么心得体会?
爬虫 反爬虫 ttk的前端制作 copilot如何使用 正则表达式!!正则表达式真的很好用
由于这次编程未进行提前安排 改起来较麻烦 认识到了模块化设计的重要性
软工真的博大精深!! 一次作业感觉自己每次都可以学到很多新东西 开放试题可以锻炼人很多技能 如同搜索学习能力 遇到问题独立解决的能力
6.运用PSP表格对任务进行分解,记录预估耗时和实际耗时。评价这次个人作业的完成过程和最终效果:哪里做的好,哪里还可以改进?
拆分的任务 | 预估耗时 | 实际耗时 |
---|---|---|
学会如何爬取 | 以为要学一天 | 3h(一早上) |
学会使用copilot | 一个晚上? | 没想到github学生认证这么麻烦!! |
学会ttk制作前端 | 两天 | 这个部分耗时差不多 因为得思考 用户点击后的模拟过程 点击后进行爬取的过程 而且得画图 比较麻烦 |
(附加)
以图表(或其他形式)显示实时爬取情况,如吞吐量等
爬取题目在前端显示
利用ttk展示 见上
设置其他合理的筛选条件
设置了spj与普通提交 中英文等tag
以网页(或其他)的形式显示前端
正在学!!后端还不太会…