jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

jsoup 的主要功能如下:

1. 从一个 URL,文件或字符串中解析 HTML;

2. 使用 DOM 或 CSS 选择器来查找、取出数据;

3. 可操作 HTML 元素、属性、文本;

实战代码:

@Service("htmlParser")
public class HtmlParserImpl implements HtmlParser { private static Logger logger = LoggerFactory.getLogger(HtmlParserImpl.class); /**
* 解析人行征信报告页面
* @param html
* @return
*/
public List<DetailVo> parse(String html) {
if (StringUtils.isBlank(html)){
return null;
} Document document = Jsoup.parse(html); Elements loanElements = document.select("table span.h1 strong");
for (Element element : loanElements){
if (element.text().contains("购房贷款")){
...
setLoanDetailVoByElement(element, detailVo, houseLoanDetailVo);
}else if (element.text().contains("其他贷款")){
...
setLoanDetailVoByElement(element, detailVo, loanDetailVo);
}
}
return list;
} /**
* 设值查询记录(包括机构、个人)
* @param tableEle
* @param agencyDetailVo
*/
private void setQueryRecordDetailVoByTableElement(Element tableEle, DetailVo agencyDetailVo) {
Elements trList = tableEle.select("tr");
if (trList != null && trList.size() > 0){
for (Element trEle : trList){
Elements trChildren = trEle.children();
if (trChildren != null && trChildren.size() == 4){
agencyDetailVo.getList().add(Lists.newArrayList(
trChildren.get(0).text(), trChildren.get(1).text(),
trChildren.get(2).text(), trChildren.get(3).text()));
}
}
}
} /**
* 设值贷款部分(包括了信用卡、购房贷款、其他贷款、为他人担保)
* @param element
* @param detailVo
* @param creditCardDetailVo
*/
private void setLoanDetailVoByElement(Element element, DetailVo detailVo, DetailVo creditCardDetailVo) {
Element olNode = element.parent().nextElementSibling();
Elements olNodes = olNode.children(); for (Element ele : olNodes){
if (ele.tagName().indexOf("span") > -1){
detailVo = new DetailVo();
detailVo.setTitle(ele.child(0).text());
}else if (ele.tagName().indexOf("li") > -1){
if (detailVo != null){
detailVo.getList().add(ele.text());
}
if (ele.nextElementSibling() == null ||!"li".equals(ele.nextElementSibling().tagName())){
creditCardDetailVo.getList().add(detailVo);
}
}
}
}
}

教程重点推荐:

http://www.cnblogs.com/jycboy/p/jsoupdoc.html

官网:

https://jsoup.org/

Java使用Jsoup简单解析页面的更多相关文章

  1. java爬虫--jsoup简单的表单抓取案例

    分析需求: 某农产品网站的农产品价格抓取 网站链接:点击打开链接 页面展示如上: 标签展示如上: 分析发现每日价格行情包括了蔬菜,水果,肉等所有的信息,所以直接抓每日行情的内容就可以实现抓取全部数据. ...

  2. java代理通俗简单解析

    1         代理 1.1            代理的概念和作用 代理的概念很好理解,就像黄牛代替票务公司给你提供票,经纪人代理艺人和别人谈合作.Java的代理是指实现类作为代理类的属性对象, ...

  3. java正则API简单解析

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...

  4. java中jsoup框架解析html

    今天遇到对网页内容进行操作,思考了一下,先获取连接后的html内容,然后对html文档进行操作呗.思路没有问题,但是问题还是不少.于是便找到了jsoup这个神器了... 1.什么是jsoup? 百度百 ...

  5. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  6. 【网络爬虫】【java】微博爬虫(四):数据处理——jsoup工具解析html、dom4j读写xml

    之前提到过,对于简单的网页结构解析,可以直接通过观察法.手工写正则解析,可以做出来,比如网易微博.但是对于结构稍微复杂点的,比如新浪微博,如果还用正则,用眼睛一个个去找,未免太麻烦了. 本文介绍两个工 ...

  7. MiseringThread.java 解析页面线程

    MiseringThread.java 解析页面线程 http://injavawetrust.iteye.com package com.iteye.injavawetrust.miner; imp ...

  8. MinerUrl.java 解析页面后存储URL类

    MinerUrl.java 解析页面后存储URL类 package com.iteye.injavawetrust.miner; /** * 解析页面后存储URL类 * @author InJavaW ...

  9. 使用 java 实现一个简单的 markdown 语法解析器

    1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...

随机推荐

  1. 开源Futter项目

    前段时间Flutter很火,所以在闲暇之余做了一个助学通的Flutter移动端应用,现在开源出来,希望对想要学习Flutter的朋友有所帮助. 我大致做个项目介绍: 学生签到系统:分java服务端提供 ...

  2. MongoDB 聚合管道

     参见:http://www.cnblogs.com/liruihuan/p/6686570.html MongoDB 的聚合功能,聚合操作主要用于对数据的批量处理,往往将记录按条件分组以后,然后再进 ...

  3. Java中避免空指针常见的方法

    什么是空指针? 当一个变量的值为null时,在Java里表示一个不存在的空对象,没有实际内容,没有给它分配内存,null也是对象成员的默认值.所以,一个对象如果没有进行初始化操作,这时如果调用这个对象 ...

  4. python的转义字符,以及字符串输出转义字符

    Python的转义字符及其含义     符    号     说     明       \'   单引号       \"   双引号       \a   发出系统响铃声       \ ...

  5. Sublime Text3添加C++编译与运行

    安装MinGW 1.安装MinGW ,其安装方法一直下一步,安装完后点Continue会出现一个窗口,在Basic Setup下标记所有包,然后在菜单里点"Apply Changes&quo ...

  6. Ubuntu安装openmpi

    Ubuntu 下安装 openmpi 需要同时安装下面三个包: sudo apt-get install openmpi-bin openmpi-doc libopenmpi-dev 建议更新系统源之 ...

  7. python-字符、字符串、函数处理

    1.列表元祖字典集合 列表 list = ["a", "b", "c", "d"] 元祖 tup = (1, 2, 3, ...

  8. web前端到底怎么学?

    互联网+的火爆,让互联网行业快速的扩张.越来越多的人想通过学习的途径进入这个行业,java开发.WEB前端开发.UI设计等专业受到大众追捧.小编这次主要介绍一下WEB前端开发,为想要学习web前端开发 ...

  9. HDU 6040 Hints of sd0061 —— 2017 Multi-University Training 1

    Hints of sd0061 Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  10. 【HDU6701】Make Rounddog Happy【权值线段树+双向单调队列】

    题意:给你一个序列,求满足要求的子序列个数,其中要求为: 1.子序列的max-子序列长度len<=k 2.子序列中不出现重复的数字 题解:首先看到子序列max,很容易想到枚举最大值然后分治,这个 ...