第二次结对作业:班级成绩表
作业要求 | https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/11250 |
---|---|
作业目标 | 掌握获取url和cookie的技术,通过httpclient免登录需求页面获取页面中需求的信息 |
作业源代码 | https://gitee.com/zhao-xiangmin/pair |
队员1 | <211803240> |
队员2 | <211806308> |
结对的过程
结对的感受
赵湘敏:这次的题目要实现获取非本低页面上的html元素并对其进行归纳整合,但是非本地元素需要通过cookie和url信息来免登录页面,我们在获取cookie和url这两个步骤卡死了,对于cookie信息我们也找了别的同学(已经完成的)进行了对比,用了许多方法都不能获得正确的cookie信息,这让我们再次意识到自己代码知识的浅薄,在这次作业结束后,希望能在作业评讲中了解我们究竟错在哪里,以及cookie信息如何获取。
陈甜:结对期间颇受队友湘敏照顾,在她的帮助下团队有条不紊的进行着设计。在结对过程中,我深深的感受到了我逻辑思维能力的不足,在拼接分散知识点的时候无法做到连续有效,注意力较为分散,多亏队友湘敏提醒,把我拉回正轨。
对对方的评价
赵湘敏:我和她在代码上几乎是同一个级别的小辣鸡,两个菜鸡互相帮扶试了很多方法都不是正确的道路,希望能在之后的合作中继续一起探索新知识
陈甜:代码方面湘敏的指点让我对此收益匪浅,感觉对以前的零散的知识点有了新的认识,同时建立了更连贯通顺的逻辑联系。拥有较强逻辑思考能力,能准确抓取需求,做事积极性很高,能很快的把想法付诸于实践。
结对照片
自己的代码行数:189行
需求分析时间:15min、编码时间:三天
分解需求的思路
- 配置文件
- 创建这个文件是为了将网址与 cookies 信息放在文件中
url=https://xxxxx.com
cookie=xxx
用Java代码获取网页的cookie信息
Connection conn = Jsoup.connect("https://www.mosoteach.cn/web/index.php?c=interaction&m=index&clazz_course_id=9E603F91-4AF8-11EA-9C7F-98039B1848C6");
conn.method(Method.GET);
conn.followRedirects(false);
Response response = conn.execute();
System.out.println(response.cookies());
这段输出的结果是
{acw_tc=707c9fca16016300460662856e3f33dee6ac94c657552710998cb9934e3ee5, teachweb=24136aa92b3d28e1e4bf40d583b6a5676793ad64, SERVERID=905c9be0aabb05a31da8a3804ad879b8|1601630046|1601630046}
但是写进config.properties
文件后运行代码失败(此处运行是借用陈颖鹏同学的代码)
发现失败后我们对于两边的文件进行了一个比对,他们的cookie是这个_uab_collina=158658350173746185946684; UM_distinctid=174b90e7235f2-01912dc8de05df-7d647865-1fa400-174b90e7236167; CNZZDATA1253495893=1453952563-1600832195-https%253A%252F%252Fcn.bing.com%252F%7C1600832195; acw_tc=707c9fda16014234986082329e34ebe10786126da6573c706a658e2c83bdf6; teachweb=980c95c2e65186a0cab63336dd96f90242b15bac; SERVERID=863f787f5166062248f8482c4d6b940d|1601424394|1601423498
看到这个之后我就想到是不是我们用的方法不对,应该用httpclient,我就去导入了commons-httpclient-3.1.jar
包,但是可能是找的代码不对也是报错,无法获取页面的cookie
- Java对于html元素的读取
此处只能纸上谈兵一下了,因为cookie获取失败之后下一步进行不了。
- 先获取单个作业(将每个作业都获取)
用select获取div元素中class为homework-item的元素在搜索到所用元素后,查找
<span style="font-size: 12px; color:#333;">
获取这个里面的学生名字
再获取div元素中具有下列特征的元素中这个学生的学号
<div style="line-height: 20px; font-size:12px; color: #666;">
最后获取学生获得的经验值
<span style="color:#8FC31F">
- 将对应学生的经验值进行整合,再将这些信息分别存入哈希表中,并对哈希表进行合并并输出
- Java将写好的数据写入文本文档中
File file = new File("d:\\array.txt"); //存放数组数据的文件
FileWriter out = new FileWriter(file);
优势:这样做完之后打代码的时候条理很清晰,写代码的思路不会乱
不会的知识
- Java如何把数组打印到txt文件里面[1][2]
- Java如何获取网页的cookie信息[3][4][5][6][7][8]
- 如何在Chrome中的开发者模式下直接查看cookie信息[9]
- 用httpclient获取页面cookie信息[10][11][12]
- 如何在Java中合并两个Map[13]
- 如何使用JSOUP抓取“需要登录”页[11:1][14][15]
- 怎样获取当前网页的URL[16]
- java下载html页面---把网页内容保存成本地html以及java对于txt的读写[17]
- 获取当前网页的cookies和url[18]————这个查到了之后不知道代码应该放在哪里,暂定无效搜索
参考资料
https://blog.csdn.net/xiaoyatouxihuanchen/article/details/52556221 ↩︎
https://blog.csdn.net/qq_32691569/article/details/89473077 ↩︎
https://blog.csdn.net/zzq900503/article/details/17785425?utm_source=blogxgwz3 ↩︎
https://jingyan.baidu.com/article/d713063517441352fcf4751f.html ↩︎
https://blog.csdn.net/w605283073/article/details/82987157 ↩︎
https://blog.csdn.net/tanwenfang/article/details/87372724 ↩︎
https://blog.csdn.net/weixin_30781107/article/details/98371795 ↩︎
https://blog.csdn.net/zzq900503/article/details/44035901/ ↩︎