java模拟登陆系统_Java模拟登录系统抓取内容【转载】

1 @Component2 public class Login extendsBaseJobs {3

4 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");5 /**

6 * 获取当月第一天7 *8 *@return

9 */

10 publicString getFirstDayOfMonth() {11 Calendar lastDate =Calendar.getInstance();12 lastDate.set(Calendar.DATE, 1);//设为当前月的1号

13 returnsdf.format(lastDate.getTime());14

15 }16

17 /**

18 * 计算当月最后一天19 *@return

20 */

21 publicString getLastDayOfMonth() {22

23 Calendar lastDate =Calendar.getInstance();24 lastDate.set(Calendar.DATE, 1);//设为当前月的1号

25 lastDate.add(Calendar.MONTH, 1);//加一个月,变为下月的1号

26 lastDate.add(Calendar.DATE, -1);//减去一天,变为当月最后一天

27 returnsdf.format(lastDate.getTime());28

29 }30

31 //测试

32 public static void main(String args[]) throwsException {33 Login l = newLogin();34 l.login();35 }36

37

38 private static CookieStore cs = newBasicCookieStore();39

40 //利用spring定时器 每天早上10点一刻抓取并发邮件

41 @Scheduled(cron = "0 15 10 ? * *")42 public void login() throwsException {43 DefaultHttpClient httpclient = newDefaultHttpClient();44

45 //创建一个本地上下文信息

46 HttpContext localContext = newBasicHttpContext();47 //在本地上下问中绑定一个本地存储

48 localContext.setAttribute(ClientContext.COOKIE_STORE, cs);49 //目标地址

50 HttpPost httppost = newHttpPost(51 "http://***/userLogin.do");52 //传参

53 StringEntity reqEntity = newStringEntity(54 "userName=jianancun&password=123456&randNum=565656");55 //设置类型

56 reqEntity.setContentType("application/x-www-form-urlencoded");57 //设置请求的数据

58 httppost.setEntity(reqEntity);59 //执行

60 HttpResponse response =httpclient.execute(httppost);61 //取得所有头内容

62 Header[] headers =response.getAllHeaders();63 for(Header h : headers) {64 String name =h.getName();65 String value =h.getValue();66 System.out.println("header : " + h.getName() + ":" +h.getValue());67 if ("Set-Cookie".equalsIgnoreCase(name)) {68 String[] strs = value.split(";");69 for(String str : strs) {70 String[] cookies = str.split("=");71 //输出cookie名称及标题72 //System.out.println("=============== : " + cookies[0] + ":" + cookies[1]);

73 cs.addCookie(new BasicClientCookie(cookies[0], cookies[1]));74 }75 cs.addCookie(new BasicClientCookie("userId", "8888"));76 cs.addCookie(new BasicClientCookie("userName", "jiannancun"));77 cs.addCookie(new BasicClientCookie("state", "0"));78 cs.addCookie(new BasicClientCookie("iAdmin", "0"));79 cs.addCookie(new BasicClientCookie("depCode", "0"));80 }81 }82 HttpEntity entity =response.getEntity();83 //显示结果

84 BufferedReader reader = new BufferedReader(newInputStreamReader(85 entity.getContent(), "UTF-8"));86 String line = null;87 //返回是否登录成功的内容 忽略

88 while ((line = reader.readLine()) != null) {89 //System.out.println(line);

90 }91

92

93

94 //可以添加多个用户

95 String jlc[] ={URLEncoder.encode("贱男春"),"jiannancun@*.cn","888888"};96 List list = new ArrayList();97 list.add(jlc);98

99 for(String []u:list){100 //查询本月考勤内容

101 String logPath = "http://**.cn/timeCard.jsp?nickName="+u[0]+"&eplTimeCard="

102 +u[2]+"&begDate="+getFirstDayOfMonth()+"&endDate="+getLastDayOfMonth();103 String content=getContent(logPath);104 Document doc =Jsoup.parse(content);105 Elements tds = doc.select("table td");106 int i =0;107 //返回的内容

108 String html =""; ;109 for(Element td : tds) {110 //取前25行内容 前25行内容显示的是昨天和今天的考勤记录

111 if(i<25){112 html+=td.text().replace(u[2],URLDecoder.decode(u[0]))+"
";113 } else break;114

115 i++;116 }117 Map map = new HashMap();118 map.put("mailTo",u[1]);119 map.put("mailTitle","考勤提醒");120 map.put("messageBody",html);121 //发送邮件122 //sendMail(map);

123 }124 }125 /**

126 * Function: 请求地址并返回页面内容127 *@authorJNC128 *@paramurl129 *@return

130 *@throwsException131 */

132 private String getContent(String url) throwsException {133 DefaultHttpClient httpclient = newDefaultHttpClient();134 String cookieStr = "";135 List list =cs.getCookies();136 for(Cookie cookie : list) {137 cookieStr += cookie.getName() + "=" + cookie.getValue() + ";";138 }139 //请求目标地址并带上cookie

140 HttpGet httpget = newHttpGet(url);141 httpget.setHeader("Cookie", cookieStr);142 //执行

143 HttpResponse response =httpclient.execute(httpget);144 HttpEntity entity =response.getEntity();145 String resultStr ="";146 BufferedReader reader = new BufferedReader(newInputStreamReader(147 entity.getContent(), "UTF-8"));148 String line = null;149 while ((line = reader.readLine()) != null) {150 resultStr+=line;151 }152 returnresultStr;153 }154 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值