Jsoup概述,一款好用的HTML解析器

jsoup是一个用于处理HTML的Java库。它提供了一个非常方便的API,可以对HTML5 DOM方法和CSS选择器进行获取URL、提取和操作数据等操作。在java中常用于爬取想要的数据

Jsoup优点

jsoup实现了WHATWG HTML5规范。

  • 从 URL、文件或字符串中抓取和分析HTML
  • 查找和提取DOM和CSS选择器中的数据
  • 操作HTML 元素、属性和文本
  • 根据安全列表清理用户提交的内容,以防止XSS攻击
  • 输出整洁的 HTML

通过Maven安装依赖

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version>
</dependency>

Jsoup类的重要类

1.org.jsoup.Jsoup类

Jsoup类是任何Jsoup程序的入口点,并将提供从各种来源加载和解析HTML文档的方法。

方法 描述
static Connection connect(String url) 创建并返回URL的连接。
static Document parse(File in, String charsetName) 将指定的字符集文件解析成文档。
static Document parse(String html) 将给定的html代码解析成文档。
static String clean(String bodyHtml, Whitelist whitelist) 从输入HTML返回安全的HTML,通过解析输入HTML并通过允许的标签和属性的白名单进行过滤。

2.org.jsoup.nodes.Document类

该类表示通过Jsoup库加载HTML文档。可以使用此类执行适用于整个HTML文档的操作。Document类官方文档

3.org.jsoup.nodes.Element类

HTML元素是由标签名称,属性和子节点组成。 使用Element类,您可以提取数据,遍历节点和操作HTML。Element类官方文档

通过HTML字符串获取

使用方法:Jsoup.parse(String html) Jsoup.parse(String html, String baseUri)

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);

通过URL获取HTML

使用方法:Jsoup.connect(String url)

Document doc = Jsoup.connect("http://example.com/").get();

该方法创建一个新的 ,并获取并解析一个 HTML 文件。如果在获取 URL 时发生错误,它将抛出一个 异常connect(String url) Connection``get()``IOException

该接口设计用于方法链接以构建特定请求:Connection

Document doc = Jsoup.connect("http://example.com")
  .data("query", "Java")
  .userAgent("Mozilla")
  .cookie("auth", "token")
  .timeout(3000)
  .post();

此方法仅支持 Web URL(和协议);如果需要从文件加载,请改用该方法。http https parse(File in, String charsetName)

通过文件获取HTML

Document parse = Jsoup.parse(new File("D:\\JAVAWEB\\index.html"), "utf-8");

解析获取HTML字符串内的内容

String html = "<html><head><title>First parse</title></head>"
        + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document parse = Jsoup.parse(html);
System.out.println(parse.html());
System.out.println("=====================");
System.out.println(parse.body());
System.out.println("=====================");
System.out.println(parse.title());

控制台输出

<html>
 <head>
  <title>First parse</title>
 </head>
 <body>
  <p>Parsed HTML into a doc.</p>
 </body>
</html>
=====================
<body>
 <p>Parsed HTML into a doc.</p>
</body>
=====================
First parse
posted @ 2021-12-29 17:57  HeiDaotu  阅读(419)  评论(0编辑  收藏  举报