JavaHTML解析器之Jsoup解析获取Document对象的方式

优采云 发布时间: 2021-05-16 21:27

  JavaHTML解析器之Jsoup解析获取Document对象的方式

  Jsoup简介

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

  

  Jsoup.jpg

  官方网址:

  官方网站还为开发人员提供了一套说明(Cookbook)。

  Jsoup解析HTML以获取Document对象,并通过操纵Document的属性来获取HTML页面的内容。因此,在开始之前,我们先介绍一下Node,Element,Document和其他XML相关概念之间的区别,以防止该概念引起混淆。导致滥用和滥用。

  相关概念

  public abstract class Node implements Cloneable

  public class Element extends Node

  public class Document extends Element

  从Jsoup源代码中的三个定义,我们可以看到以下树继承关系:

  

  节点,元素,文档继承关系.png

  节点(节点)

  从上面的继承关系中可以明显看出,文档中的所有内容都可以视为一个节点。节点的类型很多:属性节点(Attribute),注释节点(Note),文本节点(Text),元素节点(Element)等。通常,节点是这些各种节点的统称。

  元素(元素)

  与节点相比,元素的定义较窄。元素是从节点继承的,并且是节点的子集,因此元素也是节点,并且该节点的公共属性和方法也可以在该元素中使用。

  文档(文档)

  文档继承自元素,该元素引用整个HTML文档的源内容。可以通过System.out.println(document.toString());在控制台上打印网页的源内容。

  相互转换

  基于节点,元素和文档之间的“缠结”关系,每个类中提供的方法可用于适当地转换和获取所需的使用对象。

  用例

  Jsoup解析Html以获取Document对象的方式分为三类:联机Url,Html文本字符串和文件。相应的API如下

  获取Document对象后,可以组合HTML源代码,并使用Jsoup提供的API通过类,标签,id,属性和其他相关属性获取相应的Element,然后获取所需的网页内容。

  以下以Jsoup官方网站的Cookbook页面为例,解析并获取页面目录的内容。

  网页内容:

  

  Jsoup Cookbook webpage.jpg

  网页源代码:

  

jsoup开发指南,jsoup中文使用手册,jsoup中文文档

jsoup

新闻

bugs

讨论

下载

api参考

Cookbook

jsoup » cookbook

jsoup Cookbook(中文版)

入门

解析和遍历一个html文档

输入

解析一个html字符串

解析一个body片断

根据一个url加载Document对象

根据一个文件加载Document对象

数据抽取

使用dom方法来遍历一个Document对象

使用选择器语法来查找元素

从元素集合抽取属性、文本和html内容

URL处理

程序示例:获取所有链接

数据修改

设置属性值

设置元素的html内容

设置元素的文本内容

html清理

消除不受信任的html (来防止xss攻击)

jsoup html parser: copyright © 2009 - 2011 jonathan hedley

  Jsoup分析:

  import java.io.IOException;

import java.text.ParseException;

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.select.Elements;

/**

* @author 亦枫

* @created_time 2016年1月5日

* @file_user_todo Java测试类

* @blog http://www.jianshu.com/users/1c40186e3248/latest_articles

*/

public class JavaTest {

/**

* 入口函数

* @param args

* @throws ParseException

*/

public static void main(String[] args) throws ParseException {

try {

//解析Url获取Document对象

Document document = Jsoup.connect("http://www.open-open.com/jsoup/").get();

//获取网页源码文本内容

System.out.println(document.toString());

//获取指定class的内容指定tag的元素

Elements liElements = document.getElementsByClass("content").get(0).getElementsByTag("li");

for (int i = 0; i < liElements.size(); i++) {

System.out.println(i + ". " + liElements.get(i).text());

}

} catch (IOException e) {

System.out.println("解析出错!");

e.printStackTrace();

}

}

}

  分析结果:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线