Java模拟登录正方教务抓取成绩、课表、空教室
本文实例为大家分享了Java模拟登录正方教务抓取成绩、课表、空教室等信息,供大家参考,具体内容如下
1.Jwgl.java
packagecom.ican.yueban.jwgl; importjava.io.IOException; importjava.io.InputStream; importjava.util.ArrayList; importjava.util.List; importjava.util.Scanner; importorg.apache.http.HttpResponse; importorg.apache.http.NameValuePair; importorg.apache.http.client.ClientProtocolException; importorg.apache.http.client.entity.UrlEncodedFormEntity; importorg.apache.http.client.methods.CloseableHttpResponse; importorg.apache.http.client.methods.HttpGet; importorg.apache.http.client.methods.HttpPost; importorg.apache.http.impl.client.CloseableHttpClient; importorg.apache.http.impl.client.HttpClients; importorg.apache.http.message.BasicNameValuePair; importorg.jsoup.Jsoup; importorg.jsoup.nodes.Document; importorg.jsoup.select.Elements; importcom.ican.yueban.utils.DateUtils; importcom.ican.yueban.utils.GlobalConstant; importcom.ican.yueban.utils.IOUtils; importcom.ican.yueban.utils.ParseUtils; publicclassJwgl{ privatestaticStringstuNumber=""; privatestaticStringstuName=""; privatestaticStringCookie=""; privateStringindexUrl=GlobalConstant.INDEX_URL; privateStringsecretCodeUrl=GlobalConstant.SECRETCODE_URL; privateStringloginUrl=GlobalConstant.LOGIN_URL; privateStringmainUrl=GlobalConstant.MAIN_URL; privateStringqueryClassroomUrl=GlobalConstant.QUERY_CLASSROOM_URL; privateStringqueryClassroomGnmkdm=GlobalConstant.QUERY_CLASSROOM_GNMKDM; privateStringqueryStuGradeUrl=GlobalConstant.QUERY_STU_GRADE_URL; privateStringqueryStuGradeGnmkd=GlobalConstant.QUERY_STU_GRADE_GNMKDM; privateStringqueryStuCourseUrl=GlobalConstant.QUERY_STU_COURSE_URL; privateStringqueryStuCourseGnmkd=GlobalConstant.QUERY_STU_COURSE_GNMKDM; privateStringxixiaoqu=GlobalConstant.XIXIAOQU; privateStringidentityStu=GlobalConstant.IDENTITY_STU; /** *登录功能 * *@paramstuNumber *@parampassword *@return *@throwsException *@throwsUnsupportedOperationException */ publicbooleanlogin(StringstuNumber,Stringpassword) throwsUnsupportedOperationException,Exception{ this.stuNumber=stuNumber; //获取验证码 HttpGetsecretCodeGet=newHttpGet(secretCodeUrl); CloseableHttpClientclient=HttpClients.createDefault(); CloseableHttpResponseresponseSecret=client.execute(secretCodeGet); //获取返回的Cookie Cookie=responseSecret.getFirstHeader("Set-Cookie").getValue(); StringviewState=IOUtils.getViewState(indexUrl,"",""); //将验证码下载到C盘 IOUtils.getSecret(responseSecret.getEntity().getContent(), "secretCode.png","c://"); Scannersc=newScanner(System.in); System.out.println("请输入验证码:"); //手动填充刚才获取的验证码的值 Stringsecret=sc.next().trim(); HttpPostloginPost=newHttpPost(loginUrl);//创建登录的Post请求 loginPost.setHeader("Cookie",Cookie);//带上第一次请求的Cookie List<NameValuePair>nameValuePairLogin=newArrayList<NameValuePair>();//封装Post提交参数 nameValuePairLogin .add(newBasicNameValuePair("__VIEWSTATE",viewState));//隐藏表单值 nameValuePairLogin .add(newBasicNameValuePair("txtUserName",stuNumber));//学号 nameValuePairLogin.add(newBasicNameValuePair("TextBox2",password));//密码 nameValuePairLogin.add(newBasicNameValuePair("txtSecretCode",secret));//验证码 nameValuePairLogin.add(newBasicNameValuePair("RadioButtonList1", identityStu));//身份,默认学生 nameValuePairLogin.add(newBasicNameValuePair("Button1","")); nameValuePairLogin.add(newBasicNameValuePair("lbLanguage","")); nameValuePairLogin.add(newBasicNameValuePair("hidPdrs","")); nameValuePairLogin.add(newBasicNameValuePair("hidsc","")); UrlEncodedFormEntityentity=newUrlEncodedFormEntity( nameValuePairLogin,"GB2312"); loginPost.setEntity(entity); HttpResponseresponseLogin=client.execute(loginPost); //client1.close(); //第三步:判断提交数据是否成功,成功返回302 if(responseLogin.getStatusLine().getStatusCode()==302){ //如果提交成功,带着Cookie请求重定向的main页面,并获取学生姓名 HttpGetmainGet=newHttpGet(mainUrl+stuNumber); mainGet.setHeader("Cookie",Cookie); mainGet.setHeader("Referer",loginUrl); HttpResponseresponseMain=client.execute(mainGet); InputStreamis=responseMain.getEntity().getContent(); Stringhtml=""; try{ html=IOUtils.getHtml(is,"GB2312"); }catch(Exceptione){ System.out.println("解析html失败!"); e.printStackTrace(); } stuName=Jsoup.parse(html).getElementById("xhxm").text(); System.out.println("登录成功!欢迎您:"+stuName); client.close(); returntrue; }else{ System.out.println("登录失败!"); client.close(); returnfalse; } } /** *查询空教室 * *@throwsException * *@throwsException */ publicvoidqueryClassroom(Stringxiaoqu,Stringxqj,Stringsjd) throwsException{ CloseableHttpClientclient=HttpClients.createDefault(); StringnewQueryClassrommUrl=queryClassroomUrl+stuNumber+"&xm=" +stuName+queryClassroomGnmkdm;//拼接请求的Url StringparseSjd=ParseUtils.parseWeek(sjd);//解析当前节次对应的字符串 StringnowWeek=DateUtils.getWeek()+"";//获取当前时间是第几周 StringviewState=IOUtils.getViewState(newQueryClassrommUrl,Cookie, mainUrl+stuNumber); //封装查询空教室请求参数 List<NameValuePair>queryClassroomPair=newArrayList<NameValuePair>(); queryClassroomPair.add(newBasicNameValuePair("__EVENTTARGET","")); queryClassroomPair.add(newBasicNameValuePair("__EVENTARGUMENT","")); queryClassroomPair .add(newBasicNameValuePair("__VIEWSTATE",viewState)); queryClassroomPair.add(newBasicNameValuePair("xiaoq",xiaoqu));//校区类型,默认西校区 queryClassroomPair.add(newBasicNameValuePair("jslb",""));//教室类别,默认为空 queryClassroomPair.add(newBasicNameValuePair("min_zws","0"));//最小座位数,默认为0 queryClassroomPair.add(newBasicNameValuePair("max_zws",""));//最大座位数,默认为空 queryClassroomPair.add(newBasicNameValuePair("ddlKsz",nowWeek));//起始周,默认当前周 queryClassroomPair.add(newBasicNameValuePair("ddlJsz",nowWeek));//结束周,默认当前周 queryClassroomPair.add(newBasicNameValuePair("xqj",xqj));//星期几,默认当天 queryClassroomPair.add(newBasicNameValuePair("ddlDsz",""));//单双周,默认 queryClassroomPair.add(newBasicNameValuePair("sjd",parseSjd));//第几节 queryClassroomPair.add(newBasicNameValuePair("Button2","空教室查询")); queryClassroomPair.add(newBasicNameValuePair("xn","2015-2016")); queryClassroomPair.add(newBasicNameValuePair("xq","2")); queryClassroomPair.add(newBasicNameValuePair("ddlSyXn","2015-2016")); queryClassroomPair.add(newBasicNameValuePair("ddlSyxq","2")); UrlEncodedFormEntityentityClassroom=newUrlEncodedFormEntity( queryClassroomPair); HttpPostqueryClassroomPost=newHttpPost(newQueryClassrommUrl); //newQueryClassrommUrl示例:http://jwgl2.ujn.edu.cn/xxjsjy.aspx?xh=20121214104&xm=XXX&gnmkdm=N121611 queryClassroomPost.setEntity(entityClassroom); queryClassroomPost.setHeader("Referer",mainUrl+stuNumber);//设置头信息 queryClassroomPost.setHeader("Cookie",Cookie); HttpResponseresponseClassroom=client.execute(queryClassroomPost); InputStreamis=responseClassroom.getEntity().getContent(); Stringhtml=IOUtils.getHtml(is,"GB2312"); Documentdoc=Jsoup.parse(html); ElementseleClassroom=doc.select("td"); ElementseleInfo=doc.select("#lblbt"); System.out.println(eleInfo.get(0).text()); for(inti=0;i<eleClassroom.size();i++){ //只打印教室名称 if(i%8==1){ System.out.println(eleClassroom.get(i).text()); } } client.close(); } /** *重载查询空教室方法,默认时间,课程节次的无参数查询方法 * *@throwsIOException *@throwsClientProtocolException */ publicvoidqueryClassroom()throwsClientProtocolException,IOException, Exception{ StringweekDay=DateUtils.getWeekDay()+"";//获取当前时间是星期几 Stringsdj=DateUtils.getNowCourse()+"";//获取当前时间是第几节课 newJwgl().queryClassroom(xixiaoqu,weekDay,sdj); } /** *查询个人成绩方法 * *@throwsClientProtocolException *@throwsIOException */ publicvoidqueryStuGrade(Stringxn,Stringxq) throwsClientProtocolException,IOException{ CloseableHttpClientclient=HttpClients.createDefault(); StringnewQueryStuGradeUrl=queryStuGradeUrl+stuNumber+"&xm=" +stuName+queryStuGradeGnmkd; HttpPostqueryGradePost=newHttpPost(newQueryStuGradeUrl); StringviewState=IOUtils.getViewState(newQueryStuGradeUrl,Cookie, mainUrl+stuNumber); //封装请求参数 List<NameValuePair>queryGradePair=newArrayList<NameValuePair>(); queryGradePair.add(newBasicNameValuePair("__EVENTTARGET","")); queryGradePair.add(newBasicNameValuePair("__EVENTARGUMENT","")); queryGradePair.add(newBasicNameValuePair("__VIEWSTATE",viewState)); queryGradePair.add(newBasicNameValuePair("hidLanguage","")); queryGradePair.add(newBasicNameValuePair("ddlXN",xn));//学年 queryGradePair.add(newBasicNameValuePair("ddlXQ",xq));//学期 queryGradePair.add(newBasicNameValuePair("ddl_kcxz","")); queryGradePair.add(newBasicNameValuePair("btn_xq","学期成绩")); queryGradePost.setHeader("Cookie",Cookie); queryGradePost.setHeader("Referer",mainUrl+stuNumber); UrlEncodedFormEntityentityGrade=newUrlEncodedFormEntity( queryGradePair); queryGradePost.setEntity(entityGrade); HttpResponseresponQueryGradePost=client.execute(queryGradePost); StringgradeHtml=IOUtils.getHtml(responQueryGradePost.getEntity() .getContent(),"GB2312"); //System.out.println(gradeHtml); DocumentgradeDoc=Jsoup.parse(gradeHtml); ElementseleGrade=gradeDoc.select("td"); //按需求解析html<td>标签内容并输出 for(inti=0;i<7;i++){ System.out.println(eleGrade.get(i).text()); } for(inti=11;i<eleGrade.size();i=i+10){ if(i+15<eleGrade.size()){ System.out.print(eleGrade.get(i).text()+""); i=i+5; System.out.print(eleGrade.get(i).text()); System.out.println(); } client.close(); } } /** *查询个人课表方法 * *@paramxnd *@paramxqd *@throwsClientProtocolException *@throwsIOException */ publicvoidqueryStuCourse(Stringxnd,Stringxqd) throwsClientProtocolException,IOException{ CloseableHttpClientclient=HttpClients.createDefault(); StringnewQueryStuCourseUrl=queryStuCourseUrl+stuNumber+"&xm=" +stuName+queryStuCourseGnmkd; StringviewState=IOUtils.getViewState(newQueryStuCourseUrl,Cookie, mainUrl+stuNumber); HttpPostqueryStuCoursePost=newHttpPost(newQueryStuCourseUrl); List<NameValuePair>stuCoursePair=newArrayList<NameValuePair>(); stuCoursePair.add(newBasicNameValuePair("__EVENTTARGET","xqd")); stuCoursePair.add(newBasicNameValuePair("__EVENTARGUMENT","")); stuCoursePair.add(newBasicNameValuePair("__VIEWSTATE",viewState)); stuCoursePair.add(newBasicNameValuePair("xnd",xnd)); stuCoursePair.add(newBasicNameValuePair("xqd",xqd)); UrlEncodedFormEntityentitySource=newUrlEncodedFormEntity( stuCoursePair); queryStuCoursePost.setEntity(entitySource); queryStuCoursePost.setHeader("Cookie",Cookie); queryStuCoursePost.setHeader("Referer",mainUrl+stuNumber); HttpResponseresponseStuCourse=client.execute(queryStuCoursePost); Stringhtml=IOUtils.getHtml(responseStuCourse.getEntity() .getContent(),"GB2312"); DocumentdocCourse=Jsoup.parse(html); ElementseleCourse=docCourse.select("td"); for(inti=2;i<eleCourse.size();i++){ System.out.print(eleCourse.get(i).text()+""); if(i%9==0){ System.out.println(); } } } publicstaticvoidmain(String[]args){ Jwgljw=newJwgl(); try{ jw.login("这里是学号","这里是密码"); System.out.println("查询成绩测试-------"); jw.queryStuGrade("2015-2016","1"); //查询西校区,周一,第12节空教室测试。 //jw.queryClassroom("1","1","2"); System.out.println("查询空教室测试------"); jw.queryClassroom(); System.out.println("查询个人课表测试-------"); jw.queryStuCourse("2014-2015","1"); }catch(ClientProtocolExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }catch(Exceptione){ e.printStackTrace(); } //QQ:451209214 } }
2.DateUtils.java
packagecom.ican.yueban.utils; importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; publicclassDateUtils{ privatestaticStringstartDay=GlobalConstant.START_DAY;//开学日期 privatestaticStringendDay=GlobalConstant.END_DAY;//放假日期 /** *获取当前时间是第几节课,只限8-16点之间,其他时间默认1,2节课。 * *@return */ publicstaticintgetNowCourse(){ SimpleDateFormatdf=newSimpleDateFormat("HH:mm:ss");//设置日期格式 StringnowDate=df.format(newDate()); if(nowDate.startsWith("08")||nowDate.startsWith("09")){ return1;//12节课。 }elseif(nowDate.startsWith("10")||nowDate.startsWith("11")){ return2;//34节课,以此类推。 }elseif(nowDate.startsWith("12")||nowDate.startsWith("13") ||nowDate.startsWith("14")){ return3; }elseif(nowDate.startsWith("15")||nowDate.startsWith("16")){ return4; }else{ return1; } } /** *获取当前时间是第几周 * *@return */ publicstaticintgetWeek(){ intdays=0; intnowWeek=0; try{ SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd");//设置日期格式 StringnowDate=df.format(newDate()); intnowDaysBetween=daysBetween(startDay,nowDate)+1; days=daysBetween(startDay,endDay); intx=nowDaysBetween%7; if(x==0){ nowWeek=nowDaysBetween/7; }else{ nowWeek=nowDaysBetween/7+1; } }catch(ParseExceptione){ System.out.println("输入的日期不合法,解析日期失败"); e.printStackTrace(); } returnnowWeek; } /** *获取当前时间是星期几 * *@return */ publicstaticintgetWeekDay(){ Calendarcal=Calendar.getInstance(); cal.setTime(newDate()); if(cal.get(Calendar.DAY_OF_WEEK)-1==0){ return7; } returncal.get(Calendar.DAY_OF_WEEK)-1; } /** *计算两个String类型日期之间的天数 * *@paramstartDay *@paramendDay *@return *@throwsParseException */ publicstaticintdaysBetween(StringstartDay,StringendDay) throwsParseException{ SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); Calendarcal=Calendar.getInstance(); cal.setTime(sdf.parse(startDay)); longtime1=cal.getTimeInMillis(); cal.setTime(sdf.parse(endDay)); longtime2=cal.getTimeInMillis(); longbetween_days=(time2-time1)/(1000*3600*24); returnInteger.parseInt(String.valueOf(between_days)); } /** *以yyyy-MM-ddHH:mm:ss格式返回String类型系统时间 * *@return */ publicstaticStringgetNowDate(){ SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");//设置日期格式 returndf.format(newDate()); } }
3.GlobalConstant.java
packagecom.ican.yueban.utils; /** *本系统所有常量定义 * *@author宋开宗 * */ publicinterfaceGlobalConstant{ publicstaticfinalStringSTART_DAY="2016-02-29"; publicstaticfinalStringEND_DAY="2016-07-10"; publicstaticfinalStringINDEX_URL="http://jwgl2.ujn.edu.cn";//济大教务系统首页 publicstaticfinalStringSECRETCODE_URL="http://jwgl2.ujn.edu.cn/CheckCode.aspx";//验证码页面 publicstaticfinalStringLOGIN_URL="http://jwgl2.ujn.edu.cn/default2.aspx";//济大教务系统登录页 publicstaticfinalStringMAIN_URL="http://jwgl2.ujn.edu.cn/xs_main.aspx?xh=";//济大教务系统主页,菜单页面 publicstaticfinalStringQUERY_CLASSROOM_URL="http://jwgl2.ujn.edu.cn/xxjsjy.aspx?xh=";//济大查询空教室链接 publicstaticfinalStringQUERY_CLASSROOM_GNMKDM="&gnmkdm=N121611";//济大查询空教室gnmkdm publicstaticfinalStringQUERY_STU_COURSE_URL="http://jwgl2.ujn.edu.cn/xskbcx.aspx?xh=";//济大查询个人课表链接 publicstaticfinalStringQUERY_STU_COURSE_GNMKDM="&gnmkdm=N121603";//济大查询个人课表gnmkdm publicstaticfinalStringQUERY_STU_GRADE_URL="http://jwgl2.ujn.edu.cn/xscjcx.aspx?xh=";//济大查询个人成绩链接 publicstaticfinalStringQUERY_STU_GRADE_GNMKDM="&gnmkdm=N121605";//济大查询个人成绩gnmkdm publicstaticfinalStringIDENTITY_STU="学生";//身份:学生 publicstaticfinalStringXIXIAOQU="1";//济大西校区标志 publicstaticfinalStringDONGXIAOQU="2";//济大东校区标志 publicstaticfinalStringZHANGQIUXIAOQU="3";//济大章丘校区标志 publicstaticfinalStringCLASS1="'1'|'1','0','0','0','0','0','0','0','0'";//1,2节 publicstaticfinalStringCLASS2="'2'|'0','3','0','0','0','0','0','0','0'";//3,4节 publicstaticfinalStringCLASS3="'3'|'0','0','5','0','0','0','0','0','0'";//5,6节 publicstaticfinalStringCLASS4="'4'|'0','0','0','7','0','0','0','0','0'";//7,8节 publicstaticfinalStringCLASS5="'5'|'0','0','0','0','9','0','0','0','0'";//8,10节 publicstaticfinalStringCLASS6="'6'|'0','0','0','0','0','11','0','0','0'";//11,12节 publicstaticfinalStringCLASS7="'7'|'1','3','0','0','0','0','0','0','0'";//上午 publicstaticfinalStringCLASS8="'8'|'0','0','5','7','0','0','0','0','0'";//下午 publicstaticfinalStringCLASS9="'9'|'1','3','5','7','0','0','0','0','0'";//白天 publicstaticfinalStringCLASS10="'10'|'0','0','0','0','9','11','0','0','0'";//晚上 publicstaticfinalStringCLASS11="'11'|'1','3','5','7','9','11','0','0','0'";//全天 publicstaticfinalStringBTN_XUEQI="btn_xq";//学期成绩 publicstaticfinalStringBTN_XUENIAN="btn_xn";//学年成绩 publicstaticfinalStringBTN_LINIAN="btn_zcj";//历年成绩 publicstaticfinalStringUNIVERSITY_CODE_UJN="00001";//济南大学标识代码 publicstaticfinalStringUSER_STATE_N="1";//未认证 publicstaticfinalStringUSER_STATE_Y="2";//认证通过 publicstaticfinalStringCOMMENT_TYPE_NEWTHINGS="1";//评论类型1:新鲜事 publicstaticfinalStringCOMMENT_TYPE_INTEREST="2";//评论类型2:兴趣活动 }
4.IOUtils.java
packagecom.ican.yueban.utils; importjava.awt.Rectangle; importjava.awt.image.BufferedImage; importjava.io.ByteArrayOutputStream; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream; importjava.net.URL; importjava.net.URLConnection; importjava.util.Iterator; importjavax.imageio.ImageIO; importjavax.imageio.ImageReadParam; importjavax.imageio.ImageReader; importjavax.imageio.stream.ImageInputStream; importorg.apache.http.client.ClientProtocolException; importorg.apache.http.client.methods.HttpGet; importorg.apache.http.impl.client.CloseableHttpClient; importorg.apache.http.impl.client.HttpClients; importorg.jsoup.Jsoup; publicclassIOUtils{ /** *指定编码格式,把输入流转化为字符串 * *@paramis *@return *@throwsIOException */ publicstaticStringgetHtml(InputStreamis,Stringencoding) throwsIOException{ ByteArrayOutputStreambos=newByteArrayOutputStream(); byte[]buffer=newbyte[1024]; intlen=0; while((len=is.read(buffer))!=-1){ bos.write(buffer,0,len); } is.close(); returnnewString(bos.toByteArray(),encoding); } /** *下载图片 * *@paramurlString *@paramfilename *@paramsavePath *@throwsException */ publicstaticvoiddownload(StringurlString,Stringfilename, StringsavePath)throwsException{ //构造URL URLurl=newURL(urlString); //打开连接 URLConnectioncon=url.openConnection(); //设置请求超时为5s con.setConnectTimeout(5*1000); //输入流 InputStreamis=con.getInputStream(); //1K的数据缓冲 byte[]bs=newbyte[1024]; //读取到的数据长度 intlen; //输出的文件流 Filesf=newFile(savePath); if(!sf.exists()){ sf.mkdirs(); } OutputStreamos=newFileOutputStream(sf.getPath()+"\\"+filename); //开始读取 while((len=is.read(bs))!=-1){ os.write(bs,0,len); } //完毕,关闭所有链接 os.close(); is.close(); } /** *图片裁剪工具类 * *@paramsrc *@paramdest *@paramx *@paramy *@paramw *@paramh *@throwsIOException */ publicstaticvoidcutImage(Stringsrc,Stringdest,intx,inty,intw, inth)throwsIOException{ Iteratoriterator=ImageIO.getImageReadersByFormatName("jpg"); ImageReaderreader=(ImageReader)iterator.next(); InputStreamin=newFileInputStream(src); ImageInputStreamiis=ImageIO.createImageInputStream(in); reader.setInput(iis,true); ImageReadParamparam=reader.getDefaultReadParam(); Rectanglerect=newRectangle(x,y,w,h); param.setSourceRegion(rect); BufferedImagebi=reader.read(0,param); ImageIO.write(bi,"jpg",newFile(dest)); in.close(); } /** *判断字符编码集 * *@paramstr *@return */ publicstaticStringgetEncoding(Stringstr){ Stringencode="GB2312"; try{ if(str.equals(newString(str.getBytes(encode),encode))){ Strings=encode; returns; } }catch(Exceptionexception){ } encode="ISO-8859-1"; try{ if(str.equals(newString(str.getBytes(encode),encode))){ Strings1=encode; returns1; } }catch(Exceptionexception1){ } encode="UTF-8"; try{ if(str.equals(newString(str.getBytes(encode),encode))){ Strings2=encode; returns2; } }catch(Exceptionexception2){ } encode="GBK"; try{ if(str.equals(newString(str.getBytes(encode),encode))){ Strings3=encode; returns3; } }catch(Exceptionexception3){ } return"未知"; } /** *把输入流转换成图片---》获取验证码 * *@paramis *@paramfilename *@paramsavePath *@throwsException */ publicstaticvoidgetSecret(InputStreamis,Stringfilename, StringsavePath)throwsException{ //1K的数据缓冲 byte[]bs=newbyte[1024]; //读取到的数据长度 intlen; //输出的文件流 Filesf=newFile(savePath); if(!sf.exists()){ sf.mkdirs(); } OutputStreamos=newFileOutputStream(sf.getPath()+"\\"+filename); //开始读取 while((len=is.read(bs))!=-1){ os.write(bs,0,len); } //完毕,关闭所有链接 os.close(); is.close(); } /** *获取隐藏字段的__VIEWSTATE值 * *@paramurl *@paramcookie *@paramreferer *@return *@throwsUnsupportedOperationException *@throwsClientProtocolException *@throwsIOException */ publicstaticStringgetViewState(Stringurl,Stringcookie,Stringreferer) throwsUnsupportedOperationException,ClientProtocolException, IOException{ CloseableHttpClientclient=HttpClients.createDefault(); HttpGetgetViewState=newHttpGet(url); getViewState.setHeader("Cookie",cookie); getViewState.setHeader("Referer",referer);//设置头信息 Strings=IOUtils.getHtml(client.execute(getViewState).getEntity() .getContent(),"GB2312"); Stringviewstate=Jsoup.parse(s).select("input[name=__VIEWSTATE]") .val(); client.close(); returnviewstate; } }
5.ParseUtils.java
packagecom.ican.yueban.utils; publicclassParseUtils{ /** *获取课程节次对应的字符串 *@paramcourse *@return */ publicstaticStringparseWeek(Stringcourse){ Stringsjd=""; intnowCourse=Integer.parseInt(course); switch(nowCourse){ case1: sjd=GlobalConstant.CLASS1; break; case2: sjd=GlobalConstant.CLASS2; break; case3: sjd=GlobalConstant.CLASS3; break; case4: sjd=GlobalConstant.CLASS4; break; case5: sjd=GlobalConstant.CLASS5; break; case6: sjd=GlobalConstant.CLASS6; break; case7: sjd=GlobalConstant.CLASS7; break; case8: sjd=GlobalConstant.CLASS8; break; case9: sjd=GlobalConstant.CLASS9; break; case10: sjd=GlobalConstant.CLASS10; break; case11: sjd=GlobalConstant.CLASS11; break; default: sjd=GlobalConstant.CLASS1; break; } returnsjd; } }
以上就是本文的全部内容,希望对大家的学习有所帮助。