第二次结对作业

作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE2/homework/11248
作业目标 通过网络爬虫获取需要的数据并进行操作
作业源代码 https://gitee.com/naibius/pair
朱澎湧 211806362
王志坚 211806347

一、结对过程

1. 结对感受

说到写程序,如果程序足够简单或者程序员足够厉害,人们总是想自己一个人默默的完成它,不被人干扰。但这种做法真得是正确的吗? 又真得会取得突破性的进步吗?至少在我看来这是不可能的,这个社会,并不缺少编程的牛人,足够的时间,我相信一个人也是可以完成某些项目的。可是,并不是写出来就够了,我们要的是效率足够高,漏洞足够少,个人的思维毕竟是有限的,结对编程能够让我们发现更简洁,更完美的方法,使项目的完成事半功倍,这才是我们需要的。但是,结对编程并不容易,这需要团结,两个人能够很好的配合,而人与人之间的合作往往会很难,合作得好,就能做出更好的项目,反之,可能会极大的干扰到自己。因此,结对编程要求我们有着良好的合作能力,这些都需要我们慢慢的培养,所以我们应该更多的结对编程。

2. 对对方的评价

我对他的评价:条理很清晰,但是细节不太行

他对我的评价:行动派,动手能力较强。

二、时间记录

  • 代码 116 行
  • 需求分析时间:45 min
  • 编码时间:6 h
  • 结对照片

三、思路分析

我们将整个过程分为以下几个方面:

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 操作

  1. 在码云上创建远程仓库,取名:pair
  2. 加入 .gitignore 文件和开源 license
  3. 将远程仓库克隆到本地
  4. 本地 Commit
    • 至少 Commit 三次:请逐渐养成代码有进展即签入的好习惯
    • Commit 信息:请遵守一定的 Git 规范来书写 commit 信息
  5. 将完成的代码推送到远程仓库

六、参考资料

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免登录获取网址中的信息,并且巩固了之前所用到的一些知识点。

posted @ 2020-10-04 19:49  naibius  阅读(175)  评论(0编辑  收藏  举报