107
社区成员




这个作业属于哪个课 | <2023秋-福州大学软件工程社区-CSDN社区云> |
---|---|
这个作业要求在哪里 | <2023秋软工实践个人作业二-CSDN社区> |
这个作业的目标 | 学会使用copilot工具,学习爬虫,学会处理各种反爬机制 |
学号 | 102101304 |
特色功能
可以根据题目难度,关键字和算法对题目进行筛选,然后爬取对应题目的题面和第一篇题解。count变量可以设置希望爬取的题目数量。
使用的技术
cookie导入,实现账号自动登录。
实现思路
首先分析请求,列出程序需要的功能。在GUI页面添加需要的筛选框,包括有下拉菜单的题目难度选择和用户输入的关键词。然后将筛选条件传入luogu()函数进行爬取:cookie导入-进入题目页-对筛选条件进行比对-爬取符合条件的题目-保存题目。
爬取难度为“普及-”的前50道题目
对爬取函数luogu()进行单元测试。
测试样例
样例为爬取题目难度为“入门”的1道题目。
测试结果
测试设计评价(测试用例能否满足程序测试的要求)
满足程序测试要求。
子任务 | 预估哪些部分使用AIGC | 实际中哪些部分使用AIGC |
---|---|---|
代码框架 | 根据不同功能给大致模板 | 达到预估要求 |
编写GUI | 创建输入框,设置筛选条件 | 创建输入框 |
洛谷登录 | 导入cookie | 达到预估要求 |
爬取题目 | 查看题目,进行筛选,爬取题目,保存题目 | 查看题目,爬取题目 |
由于copilot认证花了较长时间,我大部分时间是使用gpt辅助编写代码。在激活copilot后,我尝试对代码进行了优化。
AIGC技术特点:
优点
快速生成代码片段,提供代码补全和建议,减少编码时间和精力消耗。
帮助开发者避免常见的编码错误。
可以和开发者交互,提高开发者的编程能力和技巧。
缺点
给出的建议不一定受用,仍然可能给出错误或不完全准确的代码建议。
给出的答案可能会冗余,重复给出实现同一个功能的函数。
2023年-世界上最美丽的画面..
阶段 | 任务 | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|---|
计划阶段 | 制定项目计划 | 1 | 1.5 |
设计阶段 | 需求分析 | 3 | 4 |
功能设计 | 3 | 3 | |
编码阶段 | GUI页面 | 3 | 4 |
爬虫程序编写 | 10 | 15 | |
测试阶段 | 单元测试 | 4 | 5 |
总耗时 | 24 | 32.5 |
学会了什么
学会使用tkinter制作copilot。
学会编写基本的爬虫程序。
学会如何处理几种反爬机制。
学会如何和gpt“高效合作”。
完成过程和效果
由于python编程能力还比较薄弱,我完成这个作业的过程很曲折。从一开始使用request爬取题目时应对反爬机制,我采用了修改爬虫程序的User-Agent头部信息;再是发现爬取题解需要登录账号,我首先想到的是自动识别验证码登录,在学会导入tesserorc库识别验证码后发现这个方法识别准确度很低,然后尝试创建 Selenium WebDriver手动打开,到现在的导入cookie自动登录。还有在ddl前24h发现题目理解错了。(理解成爬取洛谷题单前五十题,然后进行筛选)总之,在完成这份作业的过程中,我也拓展学习了很多知识。这个过程作业进度推进得比较缓慢,但是我认为学习效果很好。(一周时间内学会的内容远远超乎我的预期T T)
这是理解错任务要求写的筛选页面。
哪里做的好
程序:要求基本满足。
学生本人:很有耐心,态度很好。
哪里需要改进
对于没找到题目还没办法进行反馈。
题目中有特殊符号如‘/’还无法有效处理。(过后会优化)
~~~~~分界线~~~~~
对于原本的不足进行了改进,对应代码已经上传到GitHub仓库。
版本介绍
luogu - 1
初版本
luogu - 2
将要求筛选题目数量条件放到GUI页面
筛选框增加提示信息
对于没找到更多题目可以进行反馈
luogu - 3
将文件夹命名中的特殊符号换成'_'
部分代码优化
感谢观看这篇博客)