第二次结对作业
作业要求 | https://edu.cnblogs.com/campus/fzzcxy/2018SE2/homework/11248 |
---|---|
作业目标 | 通过网络爬虫获取需要的数据并进行操作 |
作业源代码 | https://gitee.com/naibius/pair |
朱澎湧 | 211806362 |
王志坚 | 211806347 |
一、结对过程
1. 结对感受
说到写程序,如果程序足够简单或者程序员足够厉害,人们总是想自己一个人默默的完成它,不被人干扰。但这种做法真得是正确的吗? 又真得会取得突破性的进步吗?至少在我看来这是不可能的,这个社会,并不缺少编程的牛人,足够的时间,我相信一个人也是可以完成某些项目的。可是,并不是写出来就够了,我们要的是效率足够高,漏洞足够少,个人的思维毕竟是有限的,结对编程能够让我们发现更简洁,更完美的方法,使项目的完成事半功倍,这才是我们需要的。但是,结对编程并不容易,这需要团结,两个人能够很好的配合,而人与人之间的合作往往会很难,合作得好,就能做出更好的项目,反之,可能会极大的干扰到自己。因此,结对编程要求我们有着良好的合作能力,这些都需要我们慢慢的培养,所以我们应该更多的结对编程。
2. 对对方的评价
我对他的评价:条理很清晰,但是细节不太行
他对我的评价:行动派,动手能力较强。
二、时间记录
- 代码 116 行
- 需求分析时间:45 min
- 编码时间:6 h
- 结对照片
三、思路分析
我们将整个过程分为以下几个方面:
1.获取配置文件中的 URL 地址和 cookie
Properties properties = new Properties();// 创建新的配置文件properties
properties.load(new FileInputStream("./resources/config.properties"));
String url = properties.getProperty("url");// 获取配置文件的网页URL
String cookie = properties.getProperty("cookie");// 获取配置文件中的cookie
2.创建getInfo()
方法
-
获取每个活动网址的 URL 并添加在 URL 数组中
for (Element urls : elements) {
if(urls.text().contains("课堂完成部分")) {
addUrlArr(urls);
}
}
-
获取每个学生的信息添加在学生 urlNum 数组中
for(int i=0;i<urlNum;i++) { Document student = Jsoup.connect(urlArr[i]).header("Cookie", cookie).get(); Elements stuExp = student.getElementsByClass("homework-item"); for (Element Exp : stuExp) { addStuArr(Exp); } }
3.将获取得到的数据使用sort()
方法进行排序
public static String sort(Element element, String data) {
String text = element.toString();
Pattern number = Pattern.compile(data);
Matcher matcher = number.matcher(text);
String str = "";
if (data.equals("(\\d+) 分</span>"))
str = "0";
while (matcher.find()) {
str = matcher.group(1);
}
return str;
}
4.在主方法中调用上述的各个方法
getInfo(properties);
Arrays.sort(stuArr);
5.输出各个学生信息为 txt 文件
File txt = new File("score.txt");
PrintWriter out = new PrintWriter(new FileWriter(txt));
String first = "最高经验值为:"+stuArr[0].getStuExp()+","+"最低经验值为:"+stuArr[stuNum-1].getStuExp()+","+"平均经验值为:"+avg/stuNum;
out.print(first+"\n");
for(Student stu:stuArr)
out.print(stu.toString()+"\n");
out.close();
四、优化过程
对于 cookie 和 URL 的获取不太清楚,在学习了下列链接的知识后可以初步使用
https://www.cnblogs.com/jamaler/p/11645569.html
五、git 操作
- 在码云上创建远程仓库,取名:pair
- 加入 .gitignore 文件和开源 license
- 将远程仓库克隆到本地
- 本地 Commit
- 至少 Commit 三次:请逐渐养成代码有进展即签入的好习惯
- Commit 信息:请遵守一定的 Git 规范来书写 commit 信息
- 将完成的代码推送到远程仓库
六、参考资料
https://www.jianshu.com/p/1c74f84e56b4
https://blog.csdn.net/yup1212/article/details/80385187
https://gitee.com/houdini/pair/tree/master
https://blog.csdn.net/jujishou521/article/details/52185787
七、作业小结
在本次作业中,我们学会了如何使用cookie免登录获取网址中的信息,并且巩固了之前所用到的一些知识点。