ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

第二次结对编程

2020-09-30 23:01:15  阅读:286  来源: 互联网

标签:结对 htmlunit 部分 编程 获取 https 第二次 经验值 页面


作业要求 <第二次结对作业:班级成绩表>
作业目标 <爬取云班课上的数据>
作业源代码 [pair]https://gitee.com/ender29/pair
罗童 <211803324>
许培腾 <211804229>
预计 实际
需求分析 5min
学习时间 5-8h 6-7h
编码时间 1-2h 2h
代码量 100-200 203
运行时间 1.5min

1. 结对的感受

罗童(me):本来打算这次我把比较难的登录部分做了,把提取经验部分让他完成,但因为我没用准确获取到每个课堂完成部分的页面(只获取到第一个)所以他接着做时遇到了许多问题,我把这个问题解决后把后面的都做完了,他相信我能完成。

许培腾:我感觉这次作业难度还好,有比较明显的思路,就是实际操作起来还是会因为一些知识点的不清楚或者遗忘,卡壳,导致编写过程比较久。

2. 需求分析

  1. 在线获取网页
  2. 全班同学课堂完成部分的经验
  3. 按要求对经验排序,并统计出相应的数据

3. 思路

​ 通过htmlunit库解析出xml对象,再通过jsoup解析。htmlunit是无界面浏览器,操作和使用浏览器的逻辑很像,也可以通过选择器进行DOM操作比如登录,获取输入框HtmlForm form = (HtmlForm) page.getByXPath("//form[@class='account-from']").get(0);通过getByXPath()方法获取表单类型的HtmlForm表单对象,通过getInputByName() 分别方法获取HtmlTextInput文本输入框和HtmlPasswordInput密码输入框对象。setValueAttribute()设置你的账户密码。通过选择器获取HtmlButton按钮对象,再通过调用click()方法进入的页面。

还是通过类似点击的方式进入一个又一个页面。

需要解析使用soup,原因是这个库的官方文档只支持英文,功能方法很多,很难有效找到想要的方法,其他有的教程提到的功能也很少。

分类几个模块,一个模块是返回到活动页面的html对象
还一个模块就是累加经验值,返回Set集合学生对象的类型。

4. 难点

在获取某个课堂完成部分全班经验值后,没有找到返回之前活动页面,也就是上一个页面的相关方法,会导致一直重复爬取该页面,于是又重新获取了活动页面,
这样就能够获取新的课堂完成部分全班经验值页面。但是有个缺点就是加载时间会很长,相当于每次都是重新加载然后渲染js和配置一些服务。
* 没有解决的一个问题:在获取经验值时,有些同学的经验值获取不到,测试:单纯获取了
这个部分的颜色,只要参加了就是绿色,没参加就是灰色。发现某些原网页抓取该部分是绿色,
但是htmlunit转换成xml解析出来是灰色样式。因为默认设置的score是0,所以这部分同学经验是0。有少部分这种情况。

4. 效果

  因为那个问题不知道怎么解决,统计出来会有误差。

结果如下(部分):

参考文献

标签:结对,htmlunit,部分,编程,获取,https,第二次,经验值,页面
来源: https://www.cnblogs.com/ender29/p/13756794.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有