上一篇HTTPclient模拟登陆交大图书馆 解决了登陆,登陆之后便可以查看个人信息。个人信息条目较少,如图:
主要就是:姓名、电话、目前借书、积欠金额。
查看其html代码:
下面开始进行解析:
代码
package com.ali.login.spider;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import com.ali.login.bean.UserInfo;
/**
* 处理用户信息的业务类
*
* @author 述言
*
*/
public class UserInfoHandler {
/**
* 根据返回的html 解析出用户信息
*
* @return
*/
public static UserInfo getUserInfo(String htmlstr) {
Document document = Jsoup.parse(htmlstr);
Elements patNameAddress = document.getElementsByClass("patNameAddress");
Elements brs = patNameAddress.select("br");
// for (Element br : brs) {
//
// System.out.println(br.nextSibling().toString().trim());
// }
String phoneNum = brs.get(0).nextSibling().toString();
String curLend = brs.get(1).nextSibling().toString();
int curLendNum = Integer.parseInt(curLend.substring(curLend
.indexOf(":") + 1));
System.out.println(curLendNum);
String debt = brs.get(4).nextSibling().toString();
debt = debt.substring(debt.indexOf(":") + 1);
Elements infos = patNameAddress.get(0).children();
String name = infos.get(0).text();
UserInfo userInfo = new UserInfo(name, phoneNum, curLendNum, debt);
return userInfo;
}
}
在登陆时,将用户的详细信息(加上用户名及密码)封装成userinfo对象,然后将其存入数据库。
测试代码:
boolean isConn = LibraryUtil.login(stuNo, password);
/**
* 若登陆成功则将信息保存到数据库(学号、密码需要加密)。
*/
if (isConn) {
String resultHtml = LibraryUtil.getResultHtml();
UserInfo userInfo = UserInfoHandler.getUserInfo(resultHtml);
userInfo.setStuNo(stuNo);
userInfo.setPassword(password);
System.out.println("========");
System.out.println(userInfo.toString());
}
如此便得到了用户的信息