第一次个人编程作业
博客班级 | https://edu.cnblogs.com/campus/fzzcxy/2018SE2/ |
---|---|
作业要求 | https://edu.cnblogs.com/campus/fzzcxy/2018SE2/homework/11169 |
作业目标 | <学习用jsoup爬取网页,建立使用码云,学习如何记录> |
作业源代码 | https://gitee.com/its_fucking_great/personal/blob/master/01UML/src/Score.java |
学号 | <211806335> |
- 记录自己的代码行数,需求分析时间,编码时间
- 代码行数:95
- 需求分析时间:2.5h
- 编码时间:3.5h
- 分解需求的思路
- 1解析配置文件获取数据
- 2用jsoup把html导入转成事件
- 3根据类查找匹配获取经验值(核心计算)
- 4把经验和配置文件中的数据通过相应算法得出最终成绩
- 记录不会的知识的学习过程、记录修改优化的过程
- 从网上学习了jsoup和配置文件的使用方法在编译过程遇到问题不大
- 遇到的唯一一个bug是我根据 “参加活动颜色的style” 来查找文本中的经验时,只能得到 “ 已参加” 的文本 不能得到相应的数值
- 仔细排查后 发现时html 中 两个span 虽然一样的style 但是 一个却加了分号; !!!
- 编程思路
- 前面的需求分析1 2 4 就简单导入和计算,本次作业难点就在3这里详细说说我是怎么一步一步完成的
- 首先打开HBulider-X打开html 同时删除link的css文件 页面就清爽很多
- 分析html代码后发现每个题目所在的div都是interaction-row伪类属性的
- 用 Elements titleItems = small.getElementsByClass("interaction-row");保存为元素集
- 然后用foreach遍历元素集
- 对于每个题目元素,我发现题目的标题 例如 “2020-03-17课前自测:Map集合与泛型 ” 它的span都有一个title属性
- 然后Element title = titleItem.select("span[title]").first();用select查找含有title属性span的子元素
- if(title.text().contains("编程题")) 子元素提取文本然后用String中的contains方法查找是否包含需要的题型
- 如果是,再查找里面是否有绿色文字,提取文本,再从文本提取数字然后相加(提取数字从网上查找的)
- 这里只是对编程题的查找,然后将红色部分右键提取出方法(因为还有互评经验所以用上了foreach,然后用equals筛除无数字的空字符串)
- 然后对其他 几个题型直接用上这个方法
- 参考链接
- 配置文件 https://blog.csdn.net/qq_32454537/article/details/81745127?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
- jsoup https://blog.csdn.net/fangquan1980/article/details/79805454
- 提取数字 https://www.jianshu.com/p/7c1b739a0ffa
- 总结
- 百度真强大,但主要不是百度的功劳 是其他博客园 csdn的分享,所以说我们所规范的挺重要的
- 还有就是一开始看这次作业真的是一脸懵,然后舍友说用jsoup 然后搜了搜,将别人的使用范例跑一下一下简单很多
- 还有就是jsoup好强大
- 总之就是善用工具,善用搜索引擎。就像科技改变生活,古时候可能觉得登天很难,现在却很正常
- 那些工具 框架 都能让我们写代码更加便利,我们学会善用,提高速度