获取个人借阅信息---图书馆client
在上一篇利用jsoup解析个人信息----图书馆client,获得个人基本信息后。便有了进一步的需求:获取当前借阅的具体信息
获取的方法还是一样的。利用jsoup解析借阅信息页面,获得所需数据,封装成LendBookInfo,然后将其增加一个List中。
借阅信息详情页例如以下:
模拟get请求得到其html字符串。代码较简单
/**
*获取当前借阅信息。 必须在login()调用之后
*
* @return
*/
public static String getCurLendInfo() {
String curLendInfo = null; /**
*
* location----------- /patroninfo~S3*chx/1****82/top
*
* 目标-------------/patroninfo~S3*chx/1****82/items
*
* tem_location----/patroninfo~S3*chx/1****82
*
*
*/
HttpGet httpget = null;
String tem_location = location.substring(0, location.lastIndexOf("/"));
System.out.println("tem_location---->" + tem_location); try {
httpget = new HttpGet(baseUrl + tem_location + "/items");
response = httpclient.execute(httpget);// 发送get请求 int code = response.getStatusLine().getStatusCode();
System.out.println(response.getStatusLine());
if (code == 200) {
if (response != null) {
curLendInfo = EntityUtils.toString(response.getEntity(),
HTTP.UTF_8);
}
}
} catch (ClientProtocolException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();
} return curLendInfo; }
得到html后。便能够利用jsoup进行解析。
打开firedebug。进行分析。
代码例如以下:
/**
* 获取借阅的数目信息
*
* @param lendInfoHtml
* 借阅信息详情html
* @return 借阅信息列表
*/
public static List<LendBookInfo> getLendBookInfos(String lendInfoHtml) { List<LendBookInfo> lendBookInfos = new ArrayList<>();
Document document = Jsoup.parse(lendInfoHtml);
Element table = document.getElementsByClass("patFunc").get(0);// 表格
Elements items = table.getElementsByClass("patFuncEntry");// 数目信息集合
for (Element item : items) { LendBookInfo bookInfo = null; Element ele_title = item.getElementsByClass("patFuncTitle").get(0);// 题名
String bookDetail = ele_title.child(0).text(); Element ele_barCode = item.getElementsByClass("patFuncBarcode")
.get(0);// 条形码
String barCode = ele_barCode.text(); Element ele_status = item.getElementsByClass("patFuncStatus")
.get(0);// 状态
String status = ele_status.text(); Element ele_callNumber = item.getElementsByClass("patFuncCallNo")
.get(0);// 索书号
String callNumber = ele_callNumber.text(); bookInfo = new LendBookInfo(bookDetail, callNumber, status, barCode);
lendBookInfos.add(bookInfo);
}
return lendBookInfos; }
測试例如以下:
public static void main(String[] args) { 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()); String lendInfoHtml = LibraryUtil.getCurLendInfo();
List<LendBookInfo> lendBookInfos = UserInfoHandler
.getLendBookInfos(lendInfoHtml);
for (LendBookInfo bookInfo : lendBookInfos) {
System.out.println(bookInfo);
}
}
}
測试结果:
待续……
获取个人借阅信息---图书馆client的更多相关文章
- Python爬虫实战---抓取图书馆借阅信息
Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...
- Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)
简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现 ...
- # Linux Whois3获取 运营商信息
Linux Whois3获取 运营商信息 APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的,并提供了一个查询工具,下面就让我们看看如何在Linux ...
- 测试框架httpclent 3.获取cookie的信息,然后带cookies去发送请求
在properties文件里面: startupWithCookies.json [ { "description":"这是一个会返回cookies信息的get请求&qu ...
- 反射01 Class类的使用、动态加载类、类类型说明、获取类的信息
0 Java反射机制 反射(Reflection)是 Java 的高级特性之一,是框架实现的基础. 0.1 定义 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对 ...
- 小白学react之网页获取微信用户信息
通过上一篇<小白学react之EJS模版实战>我们学习了怎样通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划.去 ...
- php获取YouTube视频信息的方法
YouTube的视频地址格式https://www.youtube.com/watch?v=[VIDEO_ID]例子:https://www.youtube.com/watch?v=psvkyf3Pz ...
- sql 2012中获取表的信息,包含字段的描述
1.获取数据库中的表 select name from sysobjects where type='U' 2.获取表字段(此处是Route表) Select name from syscolumns ...
- ThinPHP命名空间,连接数据库是要修改的配置文件,Model数据模型层,跨控制器调用,如何获取系统常量信息,
一.命名空间(主要是为了实现自动加载类) *命名空间(相当于虚拟的目录),为了让类有一个统一的文件夹来管理(可以自动加载'类'),每个文件都要有命名空间*tp如何做命名空间:*TP框架下有一个初始命名 ...
随机推荐
- Kali linux 2016.2(Rolling)中metasploit的主机探测
不多说,直接上干货! 1.活跃主机扫描 root@kali:~# ping -c 202.193.58.13 PING () bytes of data. bytes ttl= time=25.4 m ...
- HBase框架基础(一)
* HBase框架基础(一) 官方网址:http://hbase.apache.org/ * HBase是什么妖怪? 要解释HBase,我们就先说一说经常接触到的RDBMS,即关系型数据库: ** m ...
- GPU学习笔记(二)
找到了一个还不错的教程http://blog.csdn.net/augusdi/article/details/12527497 今天课比较多,但是有了这个教程解决了昨天不能运行的问题.
- Java Web应用定制404错误页面
Http响应状态码404的含义是服务器端没有找到客户端请求的资源,定制404错误页面至少有以下两个好处: 1.向客户端隐藏服务器信息,服务器提供的默认404错误页面上一般都包含当前应用使用的是什么服务 ...
- Android项目实战(四十四):浅谈Postman (网络请求调试插件)
前言: Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件. 在项目开发中,可以依赖此工具模拟API测试. 使用详解: 各种情况Api的模拟请求的Postman使用方 ...
- Sql 问题---在尝试加载程序集 ID 65537 时 Microsoft .NET Framework 出错.服务器可能资源不足
新库是直接复制的模板库 执行存储过程时报如下错 消息 10314,级别 16,状态 11,过程sp_Sync_CmsArticleToSearchs,第 30 行在尝试加载程序集 ID 65645 时 ...
- LeetCode(6)ZigZag Conversion
题目如下: C++代码: #include <iostream> #include <string> using namespace std; class Solution { ...
- Ubuntu14.04下tensorflow安装
自己电脑没装双系统,于是决定在虚拟机里装个tensorflow,以下是安装过程: 1.安装anaconda2 for Linux 官网下的话很慢,去清华的镜像网站下吧,我上一篇文章有网址 安装:bas ...
- PHP接收GET中文参数乱码的原因及解决方案
方案1: $str = iconv("gb2312","utf-8",$str); 方案2: mb_convert_encoding($str, "u ...
- cal---显示日历
cal命令用于显示当前日历,或者指定日期的日历. 语法 cal(选项)(参数) 选项 -l:显示单月输出: -3:显示临近三个月的日历: -s:将星期日作为月的第一天: -m:将星期一作为月的第一天: ...