zoukankan      html  css  js  c++  java
  • 软工作业5:第二次结对作业:班级成绩表

    作业要求 作业要求
    作业目标 学会使用git进行多人协作同步远程仓库,了解使用java/python的爬虫技术,接触整理爬取数据后的过程
    作业源代码 码云仓库
    队员1 211806320
    队员2 211806345

    结对的感受:

    • 队友的角色:轻轻松松的编写代码,也协助了我后期的数据整理
      我的角色:分析理解队友的代码- -,不断恶补知识,并整理数据。
      这次的结对作业让我们更加深刻理解和感受什么是"做中学"。使用java进行网络爬虫算是一个全新的体验,通过使用webmagic框架进行爬虫,在实践中摸索学习框架,完善了自己的学习方法

    评价:

    • 我:队友回家后仍然不忘写作业,真是一个好队友!
    • 黄:非常认真细心的一个队友

    讨论照片

    代码行数 278行
    需求分析时间 4h
    编码时间 7h

    思路:

    • 爬虫
      • 选取哪种爬取方式
        • 在老师发的资源Java 爬虫遇到需要登录的网站,该怎么办?中,提到了手动设置cookie和模拟登陆获取cookie,由于想一劳永逸省去30天一更新cookie的麻烦,而且云班课的登陆也没有验证码相关环节,所以我们就采用了模拟登陆的方法,文章中又提到了jsoup和httpclient两种模拟登陆方法,它们的区别是:jsoup的方法是只要遇到登陆页面就得获取请求,httpclient是只需要请求一次,而webmagic是使用Jsoup作为HTML解析工具,并基于其开发了 解析XPath的工具Xsoup,方便我们定位指定元素的位置,并且整个框架的流程很完整,所以我们最终采用了它来进行爬取网页。
      • 爬取流程
        • ①从云班课初始页面到登录界面
          ②从登录界面进入到自己加入的所有的班课的界面
          ③将进入“java程序高级开发”的请求链接加入到待抓取的队列中
          ④使用Jsoup解析页面信息获取“课堂完成部分”
          • 这里需要对④进行说明:这是完成获取每个课堂完成部分的环节:获取进入每一个“课堂完成部分”的请求链接,并将每个请求链接加入到集合中,然后再将这个集合加入到待抓取队列中,已实现自动抓取每个活动页面,不需要采用for循环的方式来逐个加入每一个课堂完成部分的链接,为后面数据整理提供了极大地方便
      • 数据整理
        • 考虑学生的三种得分情况(已参与已评分,已参与未评分,未参与未评分)
          • 以第一次课堂完成部分的学生名单做学生信息集合的初始化,到第二次乃至最后一次进入课堂完成部分时,直接累加每人的成绩
        • 将累加好的每人的经验值进行排序,并列出最高,最低和平均经验值
          • 遇到的问题:进行排序后,发现每个人学号进行了排序,而每个人的成绩却没有排序,猜测可能是没有一次性完整的将学生对象存入集合(由于经验值需要累加,意味着要不断更新集合中的值)
          • 解决方法:将已经累加完毕的学生信息集合重新一次性的存入另一个集合
        • 将数据写入txt文件中

    优化过程

    • 版本迭代:
      • 1.9:初步写出爬虫的流程
        2.0:优化查找学号姓名经验值的xpath路径
        2.1:为爬虫代码添加注释,添加爬取数据后处理数据的代码
        2.2:解决学号排序,经验值却不排序的问题
        2.3:将前期在main方法中存放的配置信息写入配置文件,并生成最后的文件

    git记录

    参考资料:

    http://webmagic.io/docs/zh/

  • 相关阅读:
    oracle用户被锁
    Docker入门
    物化视图
    MySQL报错:Packets larger than max_allowed_packet are not all
    ORA-01555 快照过旧
    mysql授予权限
    CentOS7.4安装部署KVM虚拟机
    前端面试题收藏
    CoffeeScript 学习笔记
    spring学习笔记(四)
  • 原文地址:https://www.cnblogs.com/-zero/p/13747728.html
Copyright © 2011-2022 走看看