第一次个人编程作业

博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2
作业要求 https://www.cnblogs.com/yifelix/p/13647905.html
作业目标 <抓取网页数据,学会个人编程>
作业源代码 https://gitee.com/draculia/draculia
学号 <211806304>
   时间记录
  • 需求分析 2 小时
  • 代码行数约 100
  • 编码时间每天 3 小时,共三天

1. 获取网页代码

  • 首先要学会如何网页解析

在上网学习的过程中发现了 jsoup 可以实现可直接解析某个 URL 地址、HTML 文本内容。并且提供了一套非常省力的 API,可通过 DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

  • 网页解析过程
    创建一个 jsoup 项目,导入 jsoup 包以 MAVEN 的形式启动。

中间发生了问题,maven 项目启动的时候网络问题导致数据下载中断,导致的结果是名为 pom.xml 的文件损坏

点击鼠标右键,选择 run as->maven clean,再重新 run as->maven build,最后 run as->maven install,等待控制台显示运行完成后,重新创建项目即可解决。

通过查找api文档首先要引入依赖

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.12.1</version>
</dependency>

测试内容

String html="<html>"+"<head>测试内容</head><body>"+"<div>hhello</div>"+"</body>"+"</html>";
org.jsoup.nodes.Document parse = Jsoup.parse(html);
System.out.println(parse);

解析代码

try {
Document document = Jsoup.connect("https://www.mosoteach.cn/web/index.php?c=interaction&m=index&clazz_course_id=CD7AE281-4AF8-11EA-9C7F-98039B1848C6").get();
System.out.println(document);} 
catch (IOException e){e.printStackTrace();}
    }

2. 找到经验部分

  • 索引关键字
    查找 api 利用 jsoup 自带的选择器可以实现元素的筛选功能,也可以利用使用 dom 方法来遍历 Document 对象。
Elements key = documentSmall.getElementsByClass("interaction-row");

根据找到的 div 找到含有经验值的代码块。

  SelfTest = index.select(".clear").prev().select("span").eq(10).text().replace(" 经验", "");

当已参与时找到一个关键字段进行索引

key.get(i).child(1).child(2).child(0).select("span").toString().indexOf("已参与")

3. 经验值百分比计算

  • 计算已参与经验值
    利用循坏遍历每次参加的活动的经验值,个别字段可能有区别,利用Float.parseFloat()将得出的结果转换为浮点类型。
  • 配置文件

读取配置配置文件方法:

    1. 将配置文件变为流
    1. 用Java提供的Properties类去加载这个流。
    1. 调用Properties 对象的getPropety 的方法这个方法需要一个参数 键名返回的是一个值(字符串型)
   InputStream in=score.class.getClassLoader().getResourceAsStream("total.properties");
	Properties file=new Properties();
	file.load(in);
	String before = file.getProperty("before");
	String base = file.getProperty("base");
	String test = file.getProperty("test");
	String program= file.getProperty("program");
	String addFull= file.getProperty("add");
  • 利用所给权重相加

另外在编码的过程中编程题一栏我发现因为我一道附加题好像都没做,而导致找不到合适的参考索引项(哭)

学习总结

  通过这次课程作业,我更能认识到自己的编程水平还有很大的问题,特别是思考的问题。很多地方缺乏思考不能很快的找到解决问题的方法
  另外因为个人水平有限对命令小工具还是不能很快自主理解,等以后老师同学们讲解之后再继续补充。

jsoup 中文文档

posted @ 2020-09-12 16:57  Draculia  阅读(207)  评论(1编辑  收藏  举报