目录

jsoup - 快速指南

jsoup - Overview

jsoup是一个基于Java的库,用于处理基于HTML的内容。 它提供了一个非常方便的API来提取和操作数据,使用最好的DOM,CSS和类似jquery的方法。 它实现了WHATWG HTML5规范,并将HTML解析为与现代浏览器相同的DOM。

jsoup libary实现了WHATWG HTML5规范,并根据现代浏览器将HTML内容解析到相同的DOM。

jsonp库提供以下功能。

  • Multiple Read Support - 它使用URL,文件或字符串读取和解析HTML。

  • CSS Selectors - 它可以使用DOM遍历或CSS选择器查找和提取数据。

  • DOM Manipulation - 它可以操作HTML元素,属性和文本。

  • Prevent XSS attacks - 它可以针对给定的安全白名单清除用户提交的内容,以防止XSS攻击。

  • Tidy - 它输出整洁的HTML。

  • Handles invalid data - jsoup可以处理未关闭的标记,隐式标记并可以可靠地创建文档结构。

jsoup - Environment Setup

本地环境设置 (Local Environment Setup)

JUnit是Java的框架,因此第一个要求是在您的机器中安装JDK。

系统要求

JDK 1.5或以上。
记忆 没有最低要求。
磁盘空间 没有最低要求。
操作系统 没有最低要求。

步骤1:验证计算机中的Java安装

首先,打开控制台并根据您正在使用的操作系统执行java命令。

OS 任务 命令
Windows 打开命令控制台 c:\> java -version
Linux 打开命令终端 $ java -version
Mac 开放式终端 machine:

让我们验证所有操作系统的输出 -

OS output
Windows

java版“1.6.0_21”

Java(TM)SE运行时环境(版本1.6.0_21-b07)

Java HotSpot(TM)客户端VM(版本17.0-b17,混合模式,共享)

Linux

java版“1.6.0_21”

Java(TM)SE运行时环境(版本1.6.0_21-b07)

Java HotSpot(TM)客户端VM(版本17.0-b17,混合模式,共享)

Mac

java版“1.6.0_21”

Java(TM)SE运行时环境(版本1.6.0_21-b07)

Java HotSpot(TM)64位服务器VM(内置17.0-b17,混合模式,共享)

如果您的系统上没有安装Java,请从以下链接https://www.oracle.com下载Java软件开发工具包(SDK)。 我们假设Java 1.6.0_21是本教程的已安装版本。

第2步:设置JAVA环境

JAVA_HOME环境变量设置为指向计算机上安装Java的基本目录位置。 例如。

OS output
Windows 将环境变量JAVA_HOME设置为C:\Program Files\Java\jdk1.6.0_21
Linux export JAVA_HOME =/usr/local/java-current
Mac export JAVA_HOME =/Library/Java/Home

将Java编译器位置附加到系统路径。

OS output
Windows 在系统变量Path的末尾附加字符串C:\Program Files\Java\jdk1.6.0_21\bin
Linux export PATH = $ PATH:$ JAVA_HOME/bin/
Mac 不需要

如上所述,使用命令java -version验证Java安装。

第3步:下载jsoup Archive

Maven Repository下载最新版本的jsoup jar文件。 在编写本教程时,我们已经下载了jsoup-1.8.3.jar并将其复制到C:\“jsoup文件夹中。

OS 存档名称
Windowsjsoup-1.8.3.jar
Linuxjsoup-1.8.3.jar
Macjsoup-1.8.3.jar

第4步:设置jsoup环境

JSOUP_HOME环境变量设置为指向计算机上存储jsoup jar的基本目录位置。 假设我们已经在JSOUP文件夹中存储了jsoup-1.8.3.jar。

Sr.No 操作系统和描述
1

Windows

将环境变量JSOUP_HOME设置为C:\JSOUP

2

Linux

export JSOUP_HOME =/usr/local/JSOUP

3

Mac

export JSOUP_HOME =/Library/JSOUP

第5步:设置CLASSPATH变量

CLASSPATH环境变量设置为指向JSOUP jar位置。

Sr.No 操作系统和描述
1

Windows

将环境变量CLASSPATH设置为%CLASSPATH%;%JSOUP_HOME%\ jsoup-1.8.3.jar;。;

2

Linux

export CLASSPATH = $ CLASSPATH:$ JSOUP_HOME/jsoup-1.8.3.jar:。

3

Mac

export CLASSPATH = $ CLASSPATH:$ JSOUP_HOME/jsoup-1.8.3.jar:。

jsoup - Parsing String

下面的示例将展示将HTML String解析为Document对象。

语法 (Syntax)

Document document = Jsoup.parse(html);

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

描述 (Description)

parse(String html)方法将输入HTML解析为新Document。 此文档对象可用于遍历和获取html dom的详细信息。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body><p>Sample Content</p></body></html>";
      Document document = Jsoup.parse(html);
      System.out.println(document.title());
      Elements paragraphs = document.getElementsByTag("p");
      for (Element paragraph : paragraphs) {
            System.out.println(paragraph.text());
      }
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Sample Title
Sample Content

jsoup - Parsing Body

下面的示例将展示将HTML fragement String解析为Element对象作为html正文。

语法 (Syntax)

Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML片段字符串。

  • body - 表示文档body元素的元素子元素,相当于document.getElementsByTag(“body”)。

描述 (Description)

parseBodyFragment(String html)方法将输入HTML解析为新文档。 此文档对象可用于遍历和获取html正文片段的详细信息。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<div><p>Sample Content</p>";
      Document document = Jsoup.parseBodyFragment(html);
      Element body = document.body();
      Elements paragraphs = body.getElementsByTag("p");
      for (Element paragraph : paragraphs) {
         System.out.println(paragraph.text());
      }
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Sample Content

jsoup - Loading from URL

以下示例将展示使用url从Web获取HTML,然后查找其数据。

语法 (Syntax)

String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 连接url并获取HTML String的主类。

  • url - 要加载的html页面的url。

描述 (Description)

connect(url)方法连接到url,get()方法返回所请求url的html。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupTester {
   public static void main(String[] args) throws IOException {
      String url = "http://www.google.com";
      Document document = Jsoup.connect(url).get();
      System.out.println(document.title());
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Google

jsoup - Loading from File

下面的示例将展示使用文件从磁盘中获取HTML然后查找其数据。

语法 (Syntax)

String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 连接url并获取HTML String的主类。

  • url - 要加载的html页面的url。

描述 (Description)

connect(url)方法连接到url,get()方法返回所请求url的html。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupTester {
   public static void main(String[] args) throws IOException, URISyntaxException {
      URL path = ClassLoader.getSystemResource("test.htm");
      File input = new File(path.toURI());
      Document document = Jsoup.parse(input, "UTF-8");
      System.out.println(document.title());
   }
}

test.htm

在C:\jsoup文件夹中创建以下test.htm文件。

<html>
   <head>
      <title>Sample Title</title>
   </head>
   <body>
      <p>Sample Content</p>
   </body>
</html>

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Sample Title

jsoup - Using DOM Methods

以下示例将在将HTML String解析为Document对象后展示DOM方法的使用。

语法 (Syntax)

Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

  • sampleDiv - Element对象表示由id“sampleDiv”标识的html节点元素。

  • links - Elements对象表示由标记“a”标识的多个节点元素。

描述 (Description)

parse(String html)方法将输入HTML解析为新Document。 此文档对象可用于遍历和获取html dom的详细信息。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a></div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      System.out.println(document.title());
      Elements paragraphs = document.getElementsByTag("p");
      for (Element paragraph : paragraphs) {
         System.out.println(paragraph.text());
      }
      Element sampleDiv = document.getElementById("sampleDiv");
      System.out.println("Data: " + sampleDiv.text());
      Elements links = sampleDiv.getElementsByTag("a");
      for (Element link : links) {
         System.out.println("Href: " + link.attr("href"));
         System.out.println("Text: " + link.text());
      }
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Sample Title
Sample Content
Data: Google
Href: www.google.com
Text: Google

jsoup - Using Selector Syntax

以下示例将在将HTML String解析为Document对象后展示选择器方法的使用。 jsoup支持类似于CSS选择器的选择器。

语法 (Syntax)

Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

  • sampleDiv - Element对象表示由id“sampleDiv”标识的html节点元素。

  • links - Elements对象表示由标记“a”标识的多个节点元素。

描述 (Description)

document.select(expression)方法解析给定的CSS选择器表达式以选择html dom元素。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
         + "<h3><a>Sample</a><h3>"
         +"</div>"
         + "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
         + "<img name='yahoo' src='yahoo.jpg' />"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      //a with href
      Elements links = document.select("a[href]");
      for (Element link : links) {
         System.out.println("Href: " + link.attr("href"));
         System.out.println("Text: " + link.text());
      }
      // img with src ending .png
      Elements pngs = document.select("img[src$=.png]");
      for (Element png : pngs) {
         System.out.println("Name: " + png.attr("name"));
      }
      // div with class=header
      Element headerDiv = document.select("div.header").first();
      System.out.println("Id: " + headerDiv.id());
      // direct a after h3
      Elements sampleLinks = document.select("h3 > a"); 
      for (Element link : sampleLinks) {
         System.out.println("Text: " + link.text());
      }
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Href: www.google.com
Text: Google
Name: google
Id: imageDiv
Text: Sample

jsoup - Extract Attributes

下面的示例将展示在将HTML String解析为Document对象后使用方法获取dom元素的属性。

语法 (Syntax)

Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Href: " + link.attr("href"));

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

  • link - 元素对象表示表示锚标记的html节点元素。

  • link.attr() - attr(attribute)方法检索元素属性。

描述 (Description)

元素对象代表一个dom elment并提供各种方法来获取dom元素的属性。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
         + "<h3><a>Sample</a><h3>"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      //a with href
      Element link = document.select("a").first();         
      System.out.println("Href: " + link.attr("href"));
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Href: www.google.com

jsoup - Extract Text

下面的示例将展示在将HTML String解析为Document对象后使用方法获取文本。

语法 (Syntax)

Document document = Jsoup.parse(html);
Element link = document.select("a").first();     
System.out.println("Text: " + link.text());

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

  • link - 元素对象表示表示锚标记的html节点元素。

  • link.text() - text()方法检索元素文本。

描述 (Description)

元素对象代表一个dom elment并提供各种方法来获取dom元素的文本。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
         + "<h3><a>Sample</a><h3>"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      //a with href
      Element link = document.select("a").first();         
      System.out.println("Text: " + link.text());
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Text: Google

jsoup - Extract HTML

下面的示例将展示在将HTML String解析为Document对象后使用方法来获取内部html和外部html。

语法 (Syntax)

Document document = Jsoup.parse(html);
Element link = document.select("a").first();         
System.out.println("Outer HTML: " + link.outerHtml());
System.out.println("Inner HTML: " + link.html());

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

  • link - 元素对象表示表示锚标记的html节点元素。

  • link.outerHtml() - outerHtml()方法检索元素完整的html。

  • link.html() - html()方法检索元素内部html。

描述 (Description)

元素对象代表一个dom elment并提供各种方法来获取dom元素的html。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
         + "<h3><a>Sample</a><h3>"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      //a with href
      Element link = document.select("a").first();         
      System.out.println("Outer HTML: " + link.outerHtml());
      System.out.println("Inner HTML: " + link.html());
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Outer HTML: <a href="www.google.com">Google</a>
Inner HTML: Google

jsoup - Working with URLs

下面的示例将展示可以提供html页面中存在的相对和绝对URL的方法。

语法 (Syntax)

String url = "http://www.iowiki.com/";
Document document = Jsoup.connect(url).get();
Element link = document.select("a").first();         
System.out.println("Relative Link: " + link.attr("href"));
System.out.println("Absolute Link: " + link.attr("abs:href"));
System.out.println("Absolute Link: " + link.absUrl("href"));

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 连接到url并获取html内容的主类。

  • link - 元素对象表示表示锚标记的html节点元素。

  • link.attr("href") - 提供锚标记中存在的href值。 它可能是相对的或绝对的。

  • link.attr("abs:href") - 在解析文档的基URI后提供绝对URL。

  • link.absUrl("href") - 在解析文档的基URI后提供绝对URL。

描述 (Description)

Element对象表示一个dom elment,并提供了获取html页面中存在的相对URL和绝对URL的方法。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
   public static void main(String[] args) throws IOException {
      String url = "http://www.iowiki.com/";
      Document document = Jsoup.connect(url).get();
      Element link = document.select("a").first();
      System.out.println("Relative Link: " + link.attr("href"));
      System.out.println("Absolute Link: " + link.attr("abs:href"));
      System.out.println("Absolute Link: " + link.absUrl("href"));
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Relative Link: index.htm
Absolute Link: https://www.iowiki.com/index.htm
Absolute Link: https://www.iowiki.com/index.htm

jsoup - Set Attributes

下面的示例将展示使用方法设置dom元素的属性,批量更新以及在将HTML String解析为Document对象后添加/删除类方法。

语法 (Syntax)

Document document = Jsoup.parse(html);
Element link = document.select("a").first();         
link.attr("href","www.yahoo.com");     
link.addClass("header"); 
link.removeClass("header");    

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

  • link - 元素对象表示表示锚标记的html节点元素。

  • link.attr() - attr(attribute,value)方法设置元素属性的对应值。

  • link.addClass() - addClass(class)方法在class属性下添加类。

  • link.removeClass() - link.removeClass() class)方法删除class属性下的类。

描述 (Description)

元素对象代表一个dom elment并提供各种方法来获取dom元素的属性。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<p>Sample Content</p>"
         + "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
         + "<div class='comments'><a href='www.sample1.com'>Sample1</a>"
         + "<a href='www.sample2.com'>Sample2</a>"
         + "<a href='www.sample3.com'>Sample3</a><div>"
         +"</div>"
         + "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
         + "<img name='yahoo' src='yahoo.jpg' />"
         +"</div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      //Example: set attribute
      Element link = document.getElementById("googleA");
      System.out.println("Outer HTML Before Modification :"  + link.outerHtml());
      link.attr("href","www.yahoo.com");      
      System.out.println("Outer HTML After Modification :"  + link.outerHtml());
      System.out.println("---");
      //Example: add class
      Element div = document.getElementById("sampleDiv");
      System.out.println("Outer HTML Before Modification :"  + div.outerHtml());
      link.addClass("header");      
      System.out.println("Outer HTML After Modification :"  + div.outerHtml());
      System.out.println("---");
      //Example: remove class
      Element div1 = document.getElementById("imageDiv");
      System.out.println("Outer HTML Before Modification :"  + div1.outerHtml());
      div1.removeClass("header");      
      System.out.println("Outer HTML After Modification :"  + div1.outerHtml());
      System.out.println("---");
      //Example: bulk update
      Elements links = document.select("div.comments a");
      System.out.println("Outer HTML Before Modification :"  + links.outerHtml());
      links.attr("rel", "nofollow");
      System.out.println("Outer HTML Before Modification :"  + links.outerHtml());
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Outer HTML Before Modification :<a id="googleA" href="www.google.com">Google</a>
Outer HTML After Modification :<a id="googleA" href="www.yahoo.com">Google</a>
---
Outer HTML Before Modification :<div id="sampleDiv">
 <a id="googleA" href="www.yahoo.com">Google</a>
</div>
Outer HTML After Modification :<div id="sampleDiv">
 <a id="googleA" href="www.yahoo.com" class="header">Google</a>
</div>
---
Outer HTML Before Modification :<div id="imageDiv" class="header">
 <img name="google" src="google.png">
 <img name="yahoo" src="yahoo.jpg">
</div>
Outer HTML After Modification :<div id="imageDiv" class="">
 <img name="google" src="google.png">
 <img name="yahoo" src="yahoo.jpg">
</div>
---
Outer HTML Before Modification :<a href="www.sample1.com">Sample1</a>
<a href="www.sample2.com">Sample2</a>
<a href="www.sample3.com">Sample3</a>
Outer HTML Before Modification :<a href="www.sample1.com" rel="nofollow">Sample1</a>
<a href="www.sample2.com" rel="nofollow">Sample2</a>
<a href="www.sample3.com" rel="nofollow">Sample3</a>

jsoup - Set HTML

下面的示例将展示使用方法在将HTML字符串解析为Document对象后将html设置,前置或附加到dom元素。

语法 (Syntax)

Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");     
div.html("<p>This is a sample content.</p>");   
div.prepend("<p>Initial Text</p>");
div.append("<p>End Text</p>");   

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

  • div - Element对象表示表示锚标记的html节点元素。

  • div.html() - html(content)方法用相应的值替换元素的外部html。

  • div.prepend() - prepend(content)方法在外部html之前添加内容。

  • div.append() - append(content)方法在外部html之后添加内容。

描述 (Description)

Element对象代表一个dom elment,并提供各种方法来设置,预置或附加html到dom元素。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      Element div = document.getElementById("sampleDiv");
      System.out.println("Outer HTML Before Modification :\n"  + div.outerHtml());
      div.html("<p>This is a sample content.</p>");
      System.out.println("Outer HTML After Modification :\n"  + div.outerHtml());
      div.prepend("<p>Initial Text</p>");
      System.out.println("After Prepend :\n"  + div.outerHtml());
      div.append("<p>End Text</p>");
      System.out.println("After Append :\n"  + div.outerHtml());          
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Outer HTML Before Modification :
<div id="sampleDiv">
 <a id="googleA" href="www.google.com">Google</a>
</div>
Outer HTML After Modification :
<div id="sampleDiv">
 <p>This is a sample content.</p>
</div>
After Prepend :
<div id="sampleDiv">
 <p>Initial Text</p>
 <p>This is a sample content.</p>
</div>
After Append :
<div id="sampleDiv">
 <p>Initial Text</p>
 <p>This is a sample content.</p>
 <p>End Text</p>
</div>
Outer HTML Before Modification :
<span>Sample Content</span>
Outer HTML After Modification :
<span>Sample Content</span>

jsoup - Set Text Content

下面的示例将展示在将HTML String解析为Document对象之后使用方法来设置,预置或附加文本到dom元素。

语法 (Syntax)

Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");     
div.text("This is a sample content.");   
div.prepend("Initial Text.");
div.append("End Text.");   

哪里

  • document - document对象表示HTML DOM。

  • Jsoup - 解析给定HTML String的主类。

  • html - HTML字符串。

  • div - Element对象表示表示锚标记的html节点元素。

  • div.text() - text(content)方法用相应的值替换元素的内容。

  • div.prepend() - prepend(content)方法在外部html之前添加内容。

  • div.append() - append(content)方法在外部html之后添加内容。

描述 (Description)

Element对象代表一个dom elment,并提供各种方法来设置,预置或附加html到dom元素。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<html><head><title>Sample Title</title></head>"
         + "<body>"
         + "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
         +"</body></html>";
      Document document = Jsoup.parse(html);
      Element div = document.getElementById("sampleDiv");
      System.out.println("Outer HTML Before Modification :\n"  + div.outerHtml());
      div.text(This is a sample content.");
      System.out.println("Outer HTML After Modification :\n"  + div.outerHtml());
      div.prepend("Initial Text.");
      System.out.println("After Prepend :\n"  + div.outerHtml());
      div.append("End Text.");
      System.out.println("After Append :\n"  + div.outerHtml());
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Outer HTML Before Modification :
<div id="sampleDiv">
 <a id="googleA" href="www.google.com">Google</a>
</div>
Outer HTML After Modification :
<div id="sampleDiv">
 This is a sample content.
</div>
After Prepend :
<div id="sampleDiv">
 Initial Text.This is a sample content.
</div>
After Append :
<div id="sampleDiv">
 Initial Text.This is a sample content.End Text.
</div>

jsoup - Sanitize HTML

以下示例将展示防止XSS攻击或跨站点脚本攻击。

语法 (Syntax)

String safeHtml =  Jsoup.clean(html, Whitelist.basic());  

哪里

  • Jsoup - 解析给定HTML String的主类。

  • html - 初始HTML字符串。

  • safeHtml - 清理HTML。

  • Whitelist - 提供默认配置以保护html的对象。

  • clean() - 使用白名单清除html。

描述 (Description)

Jsoup对象使用白名单配置清理html。

例子 (Example)

使用您选择的任何编辑器在C:/> jsoup中创建以下java程序。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
public class JsoupTester {
   public static void main(String[] args) {
      String html = "<p><a href='http://example.com/'"
         +" onclick='checkData()'>Link</a></p>";
      System.out.println("Initial HTML: " + html);
      String safeHtml =  Jsoup.clean(html, Whitelist.basic());
      System.out.println("Cleaned HTML: " +safeHtml);
   }
}

验证结果 (Verify the result)

使用javac编译器编译类,如下所示:

C:\jsoup>javac JsoupTester.java

现在运行JsoupTester来查看结果。

C:\jsoup>java JsoupTester

看到结果。

Initial HTML: <p><a href='http://example.com/' onclick='checkData()'>Link</a></p>
Cleaned HTML: <p><a href="http://example.com/" rel="nofollow">Link</a></p>
↑回到顶部↑
WIKI教程 @2018