文档章节

Java使用Jsoup简单解析页面

乐在克里特
 乐在克里特
发布于 2017/02/24 11:31
字数 360
阅读 54
收藏 2

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/

© 著作权归作者所有

共有 人打赏支持
乐在克里特
粉丝 16
博文 268
码字总数 394729
作品 0
杭州
程序员
私信 提问
加载中

评论(1)

无极之岚
无极之岚
大兄弟 你也是做人行征信的啊
使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的...

日期:2012-7-20 来源:GBin1.com 在线演示 本地下载 如果你曾经开发过内容聚合类网站的话,使用程序动态整合来自不同页面或者网站内容的功能肯定对于你来说非常熟悉。通常使用java的话,我们...

gbin1
2012/07/20
0
0
Java 库:为 Java 程序员而生的 10 + 最佳库

众所周知,Java 的生态环境相当庞大,包含了数量相当可观的官方及第三方库。利用这些库,可以解决在用 Java 开发时遇到的各类问题,让开发效率得到显著提升。 举些例子,最常用的官方库有 ja...

noeticforce
2017/06/29
10.1K
15
【java爬虫】---爬虫+jsoup轻松爬博客

爬虫+jsoup轻松爬博客 最近的开发任务主要是爬虫爬新闻信息,这里主要用到技术就是jsoup,jsoup 是一款 Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API...

雨点的名字
07/19
0
0
OSChina原创:使用 jsoup 对 HTML 文档进行解析和操作

jsoup 简介 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从HTML中攫取你所需的信息 和扩展 HT...

红薯
2010/12/17
17.6K
38
python/java 解析 HTML 网页数据的几种方法简介

工作中经常与数据打交道,去网上抓取数据也成了家常便饭。以前就准备抽空总结下的。 最近刚好看到 http://segmentfault.com/q/1010000000124036 上这篇文章有人问到了, 而且下面有热心pytho...

大数据之路
2012/10/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaScript面试题大坑之隐式类型转换实例代码

1.1-隐式转换介绍 在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算 这种无需程序员手...

peakedness丶
14分钟前
0
0
示例vue 的keep-alive缓存功能的实现

本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 #Vue 实现组件信息的缓存 当...

前端攻城老湿
16分钟前
0
0
解析Vue.js中的computed工作原理

我们通过实现一个简单版的和Vue中computed具有相同功能的函数来了解computed是如何工作的。写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批...

前端攻城小牛
17分钟前
1
0
linux脚本中父shell与子shell 执行的几种方式

本文主要介绍以下几个命令的区别: shell subshell source $ (commond) `commond` Linux执行Scripts有两种方式,主要区别在于是否建立subshell 1. source filename or . filename 不创建sub...

问题终结者
35分钟前
1
0
安装jdk和Tomcat

12月12日任务 16.1 Tomcat介绍 16.2 安装jdk 16.3 安装Tomcat Tomcat介绍 Tomcat是apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由apache、Sun和其他一些...

robertt15
36分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部