学信网的登录有验证码,是那种计算数字或者汉字识别的,很难识别。最近连学籍信息和学历信息也换成图片了,常规的正则 css xpath都不能使。

下载图片,需要先登录,获取登陆后的cookie和学籍信息的图片url。这一步由webview获得,用户自行登录,不需要理会验证码。

使用okhttp。需要导入这两个包。

package com.touna.httprequest;

import java.io.File;
import java.io.FileOutputStream;
import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response; public class HttpReq { //private OkHttpClient client = new OkHttpClient();
private final Request.Builder builder = new Request.Builder();
private final OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build(); //设置各种超时时间 /**
@param isAddXuexinHeader 是否加入学信网header到请求头
*/
public HttpReq(boolean isAddXuexinHeader){
if (isAddXuexinHeader == true){
builder.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
builder.addHeader("Accept-Encoding","gzip, deflate, sdch, br");
builder.addHeader("Accept-Language","zh-CN,zh;q=0.8");
builder.addHeader("Cache-Control","max-age=0");
builder.addHeader("Connection","keep-alive");
builder.addHeader("Host","my.chsi.com.cn");
builder.addHeader("If-Modified-Since","Tue, 13 Mar 2018 10:14:31 GMT");
builder.addHeader("Upgrade-Insecure-Requests","1");
builder.addHeader( "User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
}
} /**
@param cookie 加入cookie到请求头
*/
public void addCookieToHeader(String cookie){
builder.addHeader("cookie",cookie);
} /**
@param url get请求的url
*/
public String get(String url) {
builder.url(url);
final Request request = builder.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}catch (Exception e){
e.printStackTrace();
return "";
}
} /**
@param url 图片的地址
* */
public void savePicture(String url) {
builder.url(url);
final Request request = builder.build();
try (Response response = client.newCall(request).execute()) {
byte[] bt = response.body().bytes();
byte2image(bt, "./xueji.png");
}catch (Exception e){
e.printStackTrace();
}
} private void byte2image(byte[] data,String path){
try {
File file = new File(path);
FileOutputStream fos = new FileOutputStream(file);
fos.write(data, 0, data.length);
fos.flush();
fos.close();
System.out.println("保存图片成功。。");
} catch (Exception e) {
e.printStackTrace();
}
} public static void testBaidu(){
HttpReq baiduHttp = new HttpReq(false);
String respStr = baiduHttp.get("http://www.baidu.com");
System.out.println(respStr);
} public static void main(String[] args) {
// testBaidu();
HttpReq xuexinHttp = new HttpReq(true);
xuexinHttp.addCookieToHeader("JSESSIONID=06E39F1AE8D1EA9BFD8F34D"); //由webview执行js返回。
xuexinHttp.savePicture("https://my.chsi.com.cn/archive/gdjy/photo/show.action?pid=2367c5f88b78b088e484a51eb3"); //由webview执行js返回。
} 
}

java okhhtp下载学信网学籍信息的更多相关文章

  1. 模拟学信网登录,Cookie 序列化,在反序列化之后不能用的问题

    昨天和今天在模拟学信网登录,然后抓取用户的信息数据的时候发现一直登录不成功, 登录页面,https://account.chsi.com.cn/passport/login?service=http% ...

  2. 学信网改绑手机号码,但是忘记了老号码怎么办?利用node.js + puppeteer 跑脚本实现改绑手机号

    最近登录学信网发现自己学信网上绑定的手机号码不是目前自己使用的手机号码,于是想改绑手机号,但是发现不记得之前的手机号码了: 于是百度各种方法都无济于事:也不想重新注册账号,最后看见一篇文章通过Pyth ...

  3. java资源下载之官网地址

    [一].json下载地址 http://sourceforge.net/projects/json-lib/files/ [二].apache-commons下载地址 http://commons.a ...

  4. 爬虫下载校花网美女信息-lxml

    # coding=utf-8 # !/usr/bin/env python ''' author: dangxusheng desc : 下载校花网上的个人信息:名字-学校-图片地址-点赞数 date ...

  5. 使用JAVA爬取去哪儿网入住信息

    昨天帮一个商科同学爬取去哪儿网站的所有广州如家快捷酒店的所有入住信息. 就是上面的商务出行 xxx年入住这些东西 然而去哪儿的前端很强,在获取所有如家快捷酒店的时候就遇到了问题. 他显示的酒店列表是j ...

  6. 李洪强iOS开发之-环信02.2_环信官网下载环信 SDK

    李洪强iOS开发之-环信02.2_环信官网下载环信 SDK 移动客服即时通讯云 iOS SDK 当前版本:V3.1.4 2016-07-08 [ 版本历史 ] | 开发指南 | 知识库 | Demo源 ...

  7. java各历史版本官网下载

    java各历史版本官网下载: http://www.oracle.com/technetwork/java/javase/archive-139210.html

  8. JAVA的下载与安装和环境变量配置等详细教程

    初学JAVA时,新手常常不知如何下载JAVA,也不知如何安装JAVA以及对JAVA配置环境变量.近期学弟学妹常请教我如何下载安装和配置JAVA,于是写下此博文以便更多新手快速入门,由于我本人是玩智能车 ...

  9. java课堂测试样卷-----简易学籍管理系统

    程序设计思路:分别建立两个类:ScoreInformation类(用来定义学生的基本信息以及设置set和get函数)ScoreManagement类(用来定义实现学生考试成绩录入,考试成绩修改,绩点计 ...

随机推荐

  1. python-opencv 图像二值化,自适应阈值处理

    定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果. 一幅图像包括目标物体.背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用 ...

  2. 【转】无后端(nobackend):前端优先的Web开发【译】

    每个应用都由两样东西构成:该应用独有的功能和所有应用共有的功能,比方说用户注册.登录.忘记密码等.而从用户的角度出发,那些独有的功能归结起来就是用户界面以及系统的行为模式.而在视觉表象之后的功能,用户 ...

  3. UI设计 - 手机列表风格总结

    1       概述 1.1     背景 对UI设计过程中常见的列表风格进行总结.希望对后续的设计工作有所帮助 1.2     预期读者 UI设计师,用户体验设计师,项目经理,美工 1.3     ...

  4. 前端CSS - 相对定位,绝对定位,固定定位

    前端CSS - 相对定位,绝对定位,固定定位 1.1 相对定位 position:relative 相对定位,就是微调元素位置的.让元素相对自己原来的位置,进行位置的微调. 也就是说,如果一个盒子想进 ...

  5. JS DOM操作思维导图

  6. 用stringr包处理字符串

    <Machine Learning for Hackers>一书的合著者John Myles White近日接受了一个访谈.在访谈中他提到了自己在R中常用的几个扩展包,其中包括用ggplo ...

  7. ConsoleHelper 类

    //Writes colored text to the console and allows to clear previously written lines //as long a not li ...

  8. 从Container内存监控限制到CPU使用率限制方案

    转自:http://blog.csdn.net/Androidlushangderen/article/details/50282593 前言 最近在运维我们部门的hadoop集群时,发现了很多Job ...

  9. R语言绘制花瓣图flower plot

    R语言中有很多现成的R包,可以绘制venn图,但是最多支持5组,当组别数大于5时,venn图即使能够画出来,看上去也非常复杂,不够直观: 在实际的数据分析中,组别大于5的情况还是经常遇到的,这是就可以 ...

  10. EXP 导出出错解决方案

    前言: 今天想要把 当前用户下的数据库 导出来,使用命令 导出数据库可用语句: exp bpmp/bkc123@127.0.0.1:5050/bkcyunty file=D:\bak\db_61.dm ...