作业要求 | https://edu.cnblogs.com/campus/fzzcxy/2018SE2/homework/11248 |
---|---|
作业目标 | 使用cookie登录网页,爬取消息并计算 |
作业源代码 | https://gitee.com/gu-qingyao/gqy/tree/master/ |
队员1 谷清尧 | 211806316 |
队员2 曾鑫 | 211806366 |
需求分析&方案设计
团队介绍
本方案是18级软件工程一班的谷清尧和软件工程二班的曾鑫,学号分别是211806316、211806366,共同开发并完成这个方案。
个人介绍
谷清尧:我是个比较活泼的人,平时呢喜欢玩游戏(菜还爱玩)
曾鑫:间歇性鸡血症晚期,经常虎头蛇尾,年初立目标第二年还没实现的那种(笑哭)
结对的过程
延续上一次的结对,所以这次任务没有重新结对。
结对的感受
结对完成适合这次任务。结对编程有助于相互帮助,能力互补,互相纠错减少bug量;但结对过程中也可能遇到一些问题,比如会因为意见不合而争吵、编程过程中讨论与任务无关的事情而降低效率。所以结对编程对于我们既是一次机遇也是一次考验。
对对方的评价
谷清尧:曾鑫是一个比较踏实的人,遇事能够沉下心来做事,本身的代码能力比较强,是一个实际操作能力很强的人。
曾 鑫:谷清尧一直以来给我的印象都是一个学霸,啥都会,而且人品好,一看就是一个很靠谱的人。
工作照片
需求分析
通过免登录(cookie)访问班课网页,抓取“课堂完成部分”链接进入题目,抓取学生名字、姓名、得分情况并进行计算,输出在txt文件中。
预计 | 实际 | |
---|---|---|
需求分析 | 3h | 5h |
学习知识 | 3h | 6h |
编码时间 | 6h | 9h |
代码量 | 130行 | 150行 |
编码过程
//寻找课堂完成部分题目
for (int i = 0; i < e.size(); i++) {
Element rows_ChildElement = document.select("div[class=interaction-row]").get(i);
if (rows_ChildElement.select("span").get(1).toString().contains("课堂完成")) {
allurls.add(rows_ChildElement.attr("data-url"));
System.out.println(rows_ChildElement.attr("data-url"));
}
}
//计算成绩
public static int getStudentFraction(Elements a,int i) {
int studentfraction;
Element Score = a.get(i).child(3).child(1).child(1);
String Fraction = Score.text();
if (Fraction.contains("尚无评分")||Fraction.contains("批注")) {
studentfraction = 0;
}
else {
Fraction=Fraction.replaceAll("分","").replaceAll(" ","");
studentfraction = Integer.parseInt(Fraction);
}
return studentfraction;
//写入txt文件
public static void write(ArrayList<Students> StudentList) throws FileNotFoundException {
File file = new File("score.txt");
PrintWriter printWriter = new PrintWriter(new FileOutputStream(file), true);
double sum = 0.0;
double ave = 0.0;
for (int j = 0; j < StudentList.size(); j++) {
sum += StudentList.get(j).getScore();
}
ave = sum / StudentList.size();
Collections.sort(StudentList);
printWriter.println("最高经验值"+StudentList.get(0).getScore()+",最低经验值"+StudentList.get(StudentList.size()-1).getScore()+",平均经验值"+ave);
for (int i = 0; i < StudentList.size(); i++) {
printWriter.println(StudentList.get(i).toString());
}
printWriter.close();
}
txt文件输出效果
心得反思
这次结对作业完成并不顺利,作业的大概思路在放假之前就已经有了,但是无奈放假期间我们两个人都很忙,所以在假期快结束的时候才开始学习、编码等过程。主要还是对知识的掌握程度拖慢了我们的进程,在接下来的学习中还是需要对之前学习的知识进行巩固,减少类似情况的发生;同时也希望助教和老师能考虑到上个学期在线学习效率低以及大部分同学没有对上学期的知识有很好地消化这一情况对题目进行适当优化,提升同学的作业完成质量。
参考资料
1、Jsoup教程
2、爬虫遇到需要登录网页