package demo; import java.awt.Color; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.Properties; import java.util.Scanner; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.text.Document; import org.jsoup.Jsoup; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Score { public static void main(String[] args) throws Exception{ Properties pro = new Properties(); pro.load(new FileInputStream("total.properties")); @SuppressWarnings("rawtypes") Enumeration fileName = pro.propertyNames(); String strKey = (String)fileName.nextElement(); String strValue = pro.getProperty(strKey); double before_basic = Integer.parseInt(pro.getProperty("before")); double base_basic = Integer.parseInt(pro.getProperty("base")); double test_basic = Integer.parseInt(pro.getProperty("test")); double program_basic = Integer.parseInt(pro.getProperty("program")); double add_basic = Integer.parseInt(pro.getProperty("add")); File input = new File("small.html"); File input1 = new File("all.html"); org.jsoup.nodes.Document doc = Jsoup.parse(input1,"UTF-8","https://www.mosoteach.cn/web/index.php?c=interaction&m=index&clazz_course_id=9E603F91-4AF8-11EA-9C7F-98039B1848C6"); org.jsoup.nodes.Document doc1 = Jsoup.parse(input,"UTF-8","https://www.mosoteach.cn/web/index.php?c=interaction&m=index&clazz_course_id=9E603F91-4AF8-11EA-9C7F-98039B1848C6"); Elements introw = doc.getElementsByAttributeValue("class", "interaction-row"); // System.out.println(introw); Elements color = doc.select("span[style=color:#8FC31F;]"); Elements cy = doc.select("span[style=color:#8FC31F]"); Elements introw1 = doc1.getElementsByAttributeValue("class", "interaction-row"); // System.out.println(introw); // Elements color1 = doc1.select("span[style=color:#8FC31F;]"); // Elements cy1 = doc1.select("span[style=color:#8FC31F]"); int before = 0; int base = 0; int test = 0; int program = 0; int add = 0; int j = -1; int num = 0; int num1 = 0; int k = 0; for(int i = 0; i<introw.size() ; i++) { if(j < color.size()-1) { j++; k = j; String col = color.get(j).text(); //System.out.println(intname.get(i).text()); String regEx="[^0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(col); String tri = m.replaceAll("").trim(); String tri1 = m.replaceAll("").trim(); if(tri!=null&&!tri.equals("")) { num = Integer.valueOf(tri); } if(tri1!=null&&!tri1.equals("")) { num1 = Integer.valueOf(tri); } } if(j> color.size()-1) { num = 0; } if(j>cy.size()-1) { k = cy.size()-1; } Elements intname = doc.getElementsByClass("interaction-name"); Elements intname1 = doc1.getElementsByClass("interaction-name"); //System.out.println(intname.get(i).text()); String str = intname.get(i).text(); if(cy.get(k).text().contains("已参与")) { if(intname.get(i).text().contains("课堂完成部分")) { base += num; } else if(intname.get(i).text().contains("编程题")) { program += num; } else if(intname.get(i).text().contains("附加题")) { add += num; } else if(intname.get(i).text().contains("课堂小测")) { test += num; } else if(intname.get(i).text().contains("课前自测")) { before += num; } } } if (doc1 != null) { Elements element = doc1.getElementsByAttributeValue("class", "interaction-row"); int y = 0; for(int i=0;i<element.size();i++) { if (element.get(i).child(1).child(0).toString().contains("课前自测")&& element.get(i).child(1).child(2).toString().contains("color:#8FC31F")) { Scanner s = new Scanner(element.get(i).child(1).child(2).children().get(0).children().get(10).text()); y = s.nextInt(); before =before + y; } } } double final_before = before/before_basic*100; double final_base = base/base_basic*100; double final_test = test/test_basic*100; double final_program = program/program_basic*100; double final_add = add/add_basic*100; // System.out.println(final_before + " " + final_base + " " + final_test+ " " + final_program + " " +final_add); double final_score = final_before*0.25+final_base*0.3*0.95+final_test*0.2+final_program*0.1+final_add*0.05+6; System.out.println(final_score); } }