文档章节

Java使用Jsoup简单解析页面

乐在克里特
 乐在克里特
发布于 2017/02/24 11:31
字数 360
阅读 50
收藏 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/

© 著作权归作者所有

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

评论(1)

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

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

gbin1
2012/07/20
0
0
【java爬虫】---爬虫+jsoup轻松爬博客

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

雨点的名字
07/19
0
0
python/java 解析 HTML 网页数据的几种方法简介

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

大数据之路
2012/10/17
0
0
Jsoup代码解读之四-parser(上)

作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性。这部分也是Jsoup最复杂的部分,需要一些数据结构、状态机乃至编译器的知识。好在HTML语法不复杂,解析只是到DOM树为止,所...

黄亿华
2013/08/28
0
6
使用 jsoup 对 HTML 文档进行解析和操作

刘 柄成, 站长, 开源中国社区 简介: jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作...

SeanCai
2011/03/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之高级类型的字符串字面量类型

转发TypeScript基础入门之高级类型的字符串字面量类型 高级类型 字符串字面量类型 字符串字面量类型允许你指定字符串必须的固定值。 在实际应用中,字符串字面量类型可以与联合类型,类型保护...

durban
28分钟前
2
0
iOS权限授权添加

<!-- 相册 --> <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问相册</string> <!-- 相册写入 --> <key>NSPhotoLibraryAddUsageDescription</key> <string>App......

RainOrz
32分钟前
1
0
支配树(Dominator Tree)

MAT中的支配树 在使用MAT分析项目的内存泄漏问题时,其中有一个支配树(Dominator)视图。如果我们把Java对象之间的引用关系看做一张有向图(可以存在环)的话,对象的支配树体现了对象之间的...

akane_oimo
34分钟前
1
0
xshell官网下载及安装(免费版本)

百度搜索xshell,点击xshell官网下载链接,如图 然后点击下图的按钮 点击Latest Products,可以下载最新版本,选择要下载的版本,点击下载 选择上面红框里面的,并填写内容,submit之后会有邮...

曾大大胖
39分钟前
2
0
Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博

兼容SDK 18以上的系统,直接调用系统分享功能,分享文本、图片、文件到第三方APP,如:微信、QQ、微博等 因为偷懒,可直达微信、朋友圈、QQ、QQ空间、微博的分享仅写了图片分享的,其他的文本...

她叫我小渝
40分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部