688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2023福州大学-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践第二次作业——个人实战 |
| 这个作业的目标 | 1.爬取澳大利亚网球公开赛的信息 2.实现一个控制台程序能够处理不同的指令完成对信息的统计处理 |
| 其他参考文献 | 1.JSON的两种解析方式 2.如何用python爬数据? |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 20 | 20 |
| Estimate | 估计这个任务需要多少时间 | 20 | 56 |
| Development | 开发 | 400 | 670 |
| Analysis | 需求分析(包括学习新技术) | 40 | 80 |
| Design Spec | 生成设计文档 | 30 | 60 |
| Design Review | 设计复审 | 10 | 10 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 50 |
| Design | 具体设计 | 300 | 600 |
| Coding | 具体编码 | 30 | 20 |
| Code Review | 代码复审 | 20 | 20 |
| Test | 测试(自我测试,修改代码,提交修改) | 20 | 120 |
| Reporting | 报告 | 20 | 50 |
| Test Repor | 测试报告 | 10 | 10 |
| Size Measurement | 计算工作量 | 20 | 20 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 20 |
| 合计 | 1020 | 1626 |
进入官网

按键盘F12进入控制台模式,如图所示选择Network,Fetch/XHR,这里我们能够看到下面的菜单中有一个result的选项(如果没有,刷新几下网页就会出现)。我们点击就可以获取到相应的json信息(此时代码很乱),如下图。


对爬取到的数据进行在线解析,这里我用JSON.cn进行在线解析。如图解析后代码就变的整齐规律多了。然后我们将整理后的代码复制粘贴到我们创建的空json文件中(如下图),数据就算爬取成功了。


如图所示我们引入jar包通过里面的函数实现对JSON数组的解析

将项目划分成2个类,AOSearch只包含main函数,剩下的所有函数均在Lib类中实现,下图是主要代码分布

1.Lib函数设计
public void players() {
try {
JsonParser parser =new JsonParser();
JsonObject object = (JsonObject) parser.parse(new FileReader("players.json"));
JsonArray array = object.get("players").getAsJsonArray();
for(int i = 0; i<array.size(); i++) {
JsonObject suboObject = array.get(i).getAsJsonObject();
System.out.println("full_name:"+suboObject.get("full_name").getAsString());
System.out.println("gender:"+suboObject.get("gender").getAsString());
JsonObject nation = suboObject.get("nationality").getAsJsonObject();
System.out.println("nationality:"+nation.get("name").getAsString());
System.out.println("-----");
}
} catch (JsonIOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (JsonSyntaxException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
2.main函数设计
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
public class AOSearch {
public static void main(String[] args) throws IOException {
PrintStream otp = new PrintStream("output.txt");
Lib tool =new Lib();
String fileName ="input.txt";
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String rline;
while ((rline = bufferedReader.readLine())!=null){
System.out.println(rline);
if(rline.equals("players")) tool.players();
if(rline.substring(0,6).equals("result")) tool.result((String) rline.subSequence(7, 11));
else {
System.out.println("Error");
}
}
bufferedReader.close();
fileReader.close();
}
}
使用StringBuilder类来处理字符串数据的串接,能较大的提高效率!
例如修改前:
res = res + this.get(i) + "\n" + "-----";
修改后:
res.append(this.get(i)).append("\n").append("-----");
当读入符合规范的字符串,例如players时,文件输出如下图,如果字符串不符合要求的话,则会显示error。

一开始刚开始看到作业要求我一头雾水,甚至怀疑老师是不是弄错了作业。后来不断地求助同学,以及通过百度等一系列可以获取资料的渠道后逐渐有了思路,虽然过程比较艰苦,但也好在最终马马虎虎能算是完成任务,每次完成作业的过程中都能感受到自己一点一点的进步,这种感受是很不错的。
1.这次作业让我对git的理解更加深入,了解了很多上次作业中遗漏的地方。
2.我的代码产出过程更加有条理,先设计好之后才开始写代码,而不是埋头苦写,直接一个main函数包揽全过程
3.我的java大二成绩并不理想,只有70+。这次作业让我对当初遗漏的知识有了更大的了解。
4.因为大部分知识都不会,我上百度看了很多教程,通过对不同方法的对比我的学习效率找资料的熟练程度有了较大提升,不至于因为一些简单的小问题就麻烦同学。
缺乏异常处理说明,是否是遗漏呢?