微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java模拟登录正方教务抓取成绩、课表、空教室

这篇文章主要介绍了Java模拟登录正方教务抓取成绩、课表、空教室等信息,Java实现模拟登录正方教务抓取成绩、课表、空教室,通过HttpClient来模拟浏览器请求,Jsoup解析网页内容,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java模拟登录正方教务抓取成绩、课表、空教室等信息,供大家参考,具体内容如下

1.Jwgl.java

package com.ican.yueban.jwgl; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import com.ican.yueban.utils.DateUtils; import com.ican.yueban.utils.GlobalConstant; import com.ican.yueban.utils.IoUtils; import com.ican.yueban.utils.ParseUtils; public class Jwgl { private static String stuNumber = ""; private static String stuName = ""; private static String Cookie = ""; private String indexUrl = GlobalConstant.INDEX_URL; private String secretCodeUrl = GlobalConstant.SECRETCODE_URL; private String loginUrl = GlobalConstant.LOGIN_URL; private String mainUrl = GlobalConstant.MAIN_URL; private String queryClassroomUrl = GlobalConstant.QUERY_CLASSROOM_URL; private String queryClassroomGnmkdm = GlobalConstant.QUERY_CLASSROOM_GNMKDM; private String queryStuGradeUrl = GlobalConstant.QUERY_STU_GRADE_URL; private String queryStuGradeGnmkd = GlobalConstant.QUERY_STU_GRADE_GNMKDM; private String queryStuCourseUrl = GlobalConstant.QUERY_STU_COURSE_URL; private String queryStuCourseGnmkd = GlobalConstant.QUERY_STU_COURSE_GNMKDM; private String xixiaoqu = GlobalConstant.XIXIAOQU; private String identityStu = GlobalConstant.IDENTITY_STU; /** * 登录功能 * * @param stuNumber * @param password * @return * @throws Exception * @throws UnsupportedOperationException */ public boolean login(String stuNumber, String password) throws UnsupportedOperationException, Exception { this.stuNumber = stuNumber; // 获取验证码 HttpGet secretCodeGet = new HttpGet(secretCodeUrl); CloseableHttpClient client = HttpClients.createDefault(); CloseableHttpResponse responseSecret = client.execute(secretCodeGet); // 获取返回的Cookie Cookie = responseSecret.getFirstHeader("Set-Cookie").getValue(); String viewState = IoUtils.getViewState(indexUrl, "", ""); // 将验证码下载到C盘 IoUtils.getSecret(responseSecret.getEntity().getContent(), "secretCode.png", "c://"); Scanner sc = new Scanner(system.in); System.out.println("请输入验证码:"); // 手动填充刚才获取的验证码的值 String secret = sc.next().trim(); HttpPost loginPost = new HttpPost(loginUrl);// 创建登录的Post请求 loginPost.setHeader("Cookie", Cookie);// 带上第一次请求的Cookie List nameValuePairLogin = new ArrayList();// 封装Post提交参数 nameValuePairLogin .add(new BasicNameValuePair("__VIEWSTATE", viewState));// 隐藏表单值 nameValuePairLogin .add(new BasicNameValuePair("txtUserName", stuNumber));// 学号 nameValuePairLogin.add(new BasicNameValuePair("TextBox2", password));// 密码 nameValuePairLogin.add(new BasicNameValuePair("txtSecretCode", secret));// 验证码 nameValuePairLogin.add(new BasicNameValuePair("RadioButtonList1", identityStu));// 身份,认学生 nameValuePairLogin.add(new BasicNameValuePair("Button1", "")); nameValuePairLogin.add(new BasicNameValuePair("lbLanguage", "")); nameValuePairLogin.add(new BasicNameValuePair("hidPdrs", "")); nameValuePairLogin.add(new BasicNameValuePair("hidsc", "")); UrlEncodedFormEntity entity = new UrlEncodedFormEntity( nameValuePairLogin, "GB2312"); loginPost.setEntity(entity); HttpResponse responseLogin = client.execute(loginPost); // client1.close(); // 第三步:判断提交数据是否成功,成功返回302 if (responseLogin.getStatusLine().getStatusCode() == 302) { // 如果提交成功,带着Cookie请求重定向的main页面,并获取学生姓名 HttpGet mainGet = new HttpGet(mainUrl + stuNumber); mainGet.setHeader("Cookie", Cookie); mainGet.setHeader("Referer", loginUrl); HttpResponse responseMain = client.execute(mainGet); InputStream is = responseMain.getEntity().getContent(); String html = ""; try { html = IoUtils.getHtml(is, "GB2312"); } catch (Exception e) { System.out.println("解析html失败!"); e.printstacktrace(); } stuName = Jsoup.parse(html).getElementById("xhxm").text(); System.out.println("登录成功!欢迎您:" + stuName); client.close(); return true; } else { System.out.println("登录失败!"); client.close(); return false; } } /** * 查询空教室 * * @throws Exception * * @throws Exception */ public void queryClassroom(String xiaoqu, String xqj, String sjd) throws Exception { CloseableHttpClient client = HttpClients.createDefault(); String newQueryClassrommUrl = queryClassroomUrl + stuNumber + "&xm=" + stuName + queryClassroomGnmkdm;// 拼接请求的Url String parseSjd = ParseUtils.parseWeek(sjd);// 解析当前节次对应的字符串 String NowWeek = DateUtils.getWeek() + "";// 获取当前时间是第几周 String viewState = IoUtils.getViewState(new上一篇:java中对List分段操作的实例下一篇:java 全角半角字符转换的方法实例 热门搜索

抓取课表 

正方教务 

模拟登录 

登录模拟 

模拟登录12306 

相关文章

Java模拟登录正方教务抓取成绩、课表、空教室

2021-09-10阅读(4329)评论(0)推荐()

这篇文章主要介绍了Java模拟登录正方教务抓取成绩、课表、空教室等信息,Java实现模拟登录正方教务抓取成绩、课表、空教室,通过HttpClient来模拟浏览器...

PHP实现模拟登陆方正教务系统抓取课表

2021-11-06阅读(4049)评论(0)推荐()

这篇文章主要介绍了PHP实现模拟登陆方正教务系统抓取课表的相关资料,需要的朋友可以参考下

PHP使用Curl实现模拟登录及抓取数据功能示例

2021-10-08阅读(9565)评论(0)推荐()

这篇文章主要介绍了PHP使用Curl实现模拟登录及抓取数据功能,结合实例形式分析了PHP使用curl进行登陆、验证、cookie操作与数据抓取等相关实现技巧,需...

NodeJs模拟登陆正方教务

2021-10-11阅读(7526)评论(0)推荐()

网上已经有很多关于模拟登陆正方教务的作品了,基于 PHP,Python,Java,.Net 加上NodeJs,这几门语言都可以实现模拟登陆,模拟登陆的技术点不是...

Python爬虫之模拟知乎登录方法教程

2021-11-08阅读(5194)评论(0)推荐()

在爬虫过程中,有些页面登录之前是被禁止抓取的,这个时候就需要模拟登陆了,下面这篇文章主要给大家介绍了利用Python爬虫模拟知乎登录方法教程,文中介绍的非常...

python采用requests库模拟登录和抓取数据的简单示例

2021-10-13阅读(6690)评论(0)推荐()

这篇文章主要介绍了python采用requests库模拟登录和抓取数据的简单示例,代码简单却功能强大!需要的朋友可以参考下

Python实现登录人人网并抓取新鲜事的方法

2021-10-17阅读(6926)评论(0)推荐()

这篇文章主要介绍了Python实现登录人人网并抓取新鲜事的方法,可实现Python模拟登陆并抓取新鲜事的功能,需要的朋友可以参考下

取消

有人回复邮件通知

提交评论

© 2021 编程之家 

工信部备案号:琼ICP备2022000316号

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐