zoukankan      html  css  js  c++  java
  • 第一次个人编程作业:我的分数我做主 (9.10更新截取数据的思路)

    第一次个人编程作业:我的分数我做主



    博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1
    作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/11110
    作业目标 <[初步使用Git进行源代码管理] [尝试PSP开发流程] [记录整个过程并写总结]>
    作业源代码 https://gitee.com/wang-bingwei/personal
    学号 <211806342>



    1.记录自己的代码行数,需求分析时间,编码时间


    预估时间(小时) 实际时间(小时)
    计划
    需求分析 0.5 0.5
    具体设计 0.5 2
    开发
    编码 1 6
    测试 0.5 0.5
    记录与总结 2 3
    合计花费时间 4.5 12



    2.分解需求的思路


    • small.html和all.html作为参数传入Score
    • 使用Jsoup分别截取经验值,并在截取的同时累计
    • 按比例计算输出



    3.记录不会的知识的学习过程、记录修改优化的过程


    1. 如何记录和总结?

      Typora记录过程和总结,后使用Atom进行排版预览,最后发表博客

    2. 如何用Atom进行预览?

      打开Atom编辑器
      快捷键Ctrl+Shift+P,打开命令输入页面
      输入 markdown preview toggle
      实现左边编辑右边预览

    3. 准备工作:

      • Git的操作
      • Markdown的使用
      • Java命名规范和代码格式
    4. 如何导入和读取配置文件?

      https://blog.csdn.net/amosjob/article/details/82747733?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

    5. 如何解析HTML文件?

      https://www.cnblogs.com/youyoui/p/11065923.html

      https://www.jb51.net/article/43485.htm

      https://www.cnblogs.com/sam-uncle/p/10922366.html

    6. 如何使用Jsoup?

      https://blog.csdn.net/zhangboy1234/article/details/38893955

      https://www.open-open.com/jsoup/

      https://developer.ibm.com/zh/articles/j-lo-jsouphtml/

      (此链接由张同学提供,感觉写的特别好故贴出)https://www.jb51.net/article/140545.htm

    7. 如何导入jar包?

      https://blog.csdn.net/qq_37591637/article/details/84563744



    以下为9.10更新部分


    1. 在Webstorm中打开html文件和格式混乱,如何对齐代码?

      • centOS 下 webstorm 格式化代码的快捷键:

        	Ctrl + Shift + i
        
      • windows 下 webstorm 格式化代码的快键键

        	Ctrl + Alt + i
        
      • mac 下 webstorm 格式化代码的快捷键

        	Option + Command + i
        

    1. jsoup用法--从元素抽取属性,文本和HTML

      在解析获得一个Document实例对象,并查找到一些元素之后要得在这些元素中的数据

      方法:
      要取得一个属性的值,可以使用Node.attr(String key) 方法
      对于一个元素中的文本,可以使用Element.text()方法
      对于要取得元素或属性中的HTML内容,可以使用Element.html(), 或 Node.outerHtml()方法
      示例:

      String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
      Document doc = Jsoup.parse(html);//解析HTML字符串返回一个Document实现
      Element link = doc.select("a").first();//查找第一个a元素
      String text = doc.body().text(); // "An example link"//取得字符串中的文本
      

    10. 截取特定数据的思路

    首先在webstorm中打开small.html,一键格式化代码,并分析;

    通过观察可以得出要判断的三个信息都在 class="interaction-row" 的div内;

    • 我们要判断三个关键信息是:

      • 题目类型
      • 是否参加
      • 经验值得分

    • 经过简化的目标区域(删除部分信息):
    <div class="interaction-row" data-appraise-type="TEACHER">	//i
        <img>
        <div>	//i.1 即 child(1)
            
            <div>	//i.1.1 child(1).child(0)
                <span>已结束</span>
                <span>2020-04-17编程题:数据访问类</span>
            </div>
            
            <div>	//i.1.2 即child(1).child(1)
            </div>
            
            <div>	//i.1.3 即child(1).child(2)
                
                <div>	//i.1.3.1 即child(1).child(2).child(0)
                    <span>共 </span>
                    <span>5</span>
                    <span>人参与</span>
                    <span style="margin:0 5px;">|</span>
                    <span>2020-04-17</span>
                    <span style="margin:0 5px;">|</span>
                    <!-- 经验值 START -->
                    <!-- 已参与 -->
                    <!-- 被评价得分 -->
                    <span style="color:#EC6941;">13 经验</span>	// 即child(1).child(2).child(0).select("span").get(6)	
                    <!-- 含有互评份额 -->
                    <!-- 经验值 END -->
                    <!-- 剩余时间 -->
                </div>
                
                <div class="clear">	//i.1.3.2
                </div>
            </div>
        </div>
    </div>
    

    • 由此判断要截取的三个关键信息的所处位置是:

      • 题目类型:在i.1.1 的第二个span内

      • 是否参加:在i.1.3.1内

      • 注:此处调用.toString().contains("已参与")即可判断是否参加活动

      • 经验值得分:在i.1.3.1的第七个span内

    有了具体的位置信息就可以开始截取需要的信息了


    • jsoup三个好用的方法:
    .child(i);  //查找第i个子元素
    
    .get(i);	//查找第i+1个元素
    
    .select("div[class=interaction-row]");	//查找特定元素
    

    • 以单个div为例验证截取结果是否正确:


    9.9 代码行数:125行(含注释)

    9.10 代码行数:156行(含注释)


    9.9 总结:一开始一直在原地打转浪费了不少时间:在如何截取字符的方案上犹豫不决,直到参考其他同学的作业后发现采用Jsoup竟如此简单代码效率如此之高,才确定下方案(之前受限于水平,用Jsoup一直达不到目的,困扰了一晚上直到看到别人的代码才茅塞顿开,在此由衷感谢陈同学们和谢同学!)。由此反思,自己的能力水平不堪入目,且写出的代码不够简练,在实现相同目的的方式上也更繁琐。接下来的时间需要更多地复习和练习上学期学的java高级开发课程内容,要尽快弥补上自己的缺点,更熟练地使用java。

    9.10 总结 将筛选部分的具体思路写出,但还是觉得不够高效率,接下来的周末可以研究下如何用网络爬虫解决问题

  • 相关阅读:
    国庆七天乐——第二天
    国庆七天乐——第一天
    线段树+树状数组+分块+循环展开 的模板
    AOE网络——求关键路径
    最小生成树模板+并查集(隐藏)+结构体排序模板
    并查集模板
    最短路径模板总结
    newifi mini将led指示灯引出当gpio使用
    openwrt 无线中继
    笔记本硬盘盒改装台式机硬盘盒
  • 原文地址:https://www.cnblogs.com/211806342wbw/p/13643286.html
Copyright © 2011-2022 走看看