📜  jsoup-概述(1)

📅  最后修改于: 2023-12-03 14:43:35.149000             🧑  作者: Mango

Jsoup-概述

简介

Jsoup是一个Java的HTML解析器,可用于从网络上抓取HTML并解析,支持CSS选择器、jQuery语法等方式,可以对HTML文档进行增删改查等操作。

功能特性
  • 支持HTTP访问
  • 支持HTTPS协议
  • 支持CSS选择器
  • 支持jQuery语法
  • 支持查找、过滤和修改HTML文档中的内容
  • 支持HTML美化
  • 支持XML解析
  • 支持编码转换
安装
Maven
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version>
</dependency>
Gradle
implementation 'org.jsoup:jsoup:1.14.3'
用法
获取文档对象
// 从URL加载HTML文档
Document doc = Jsoup.connect("https://www.baidu.com").get();

// 从文件加载HTML文档
File input = new File("input.html");
Document doc = Jsoup.parse(input, "UTF-8", "https://example.com/");

// 直接解析HTML字符串
String html = "<html><head><title>Jsoup Example</title></head></html>";
Document doc = Jsoup.parse(html);
使用CSS选择器
// 使用CSS选择器查找元素
Elements links = doc.select("a[href]"); // 所有链接
Elements pngs = doc.select("img[src$=.png]"); // 所有后缀为.png的图片

// 使用多重选择器
Elements links = doc.select("a[href], input[type=submit]");
遍历元素
// 遍历所有链接
for (Element link : links) {
    String href = link.attr("href");
    String text = link.text();
}

// 遍历表格
Element table = doc.select("table").first();
for (Element row : table.select("tr")) {
    Elements tds = row.select("td");
    if (tds.size() > 1) {
        String title = tds.get(0).text();
        String author = tds.get(1).text();
    }
}
修改元素
// 修改元素的属性
Element link = doc.select("a[href]").first();
link.attr("href", "https://www.google.com");

// 修改元素的文本内容
Element title = doc.select("title").first();
title.text("Jsoup Example");

// 在元素中插入HTML内容
Element div = doc.select("div").first();
div.append("<p>This is a new paragraph</p>");

// 删除元素
Element video = doc.select("video").first();
video.remove();
输出HTML
// 输出整个HTML文档
System.out.println(doc);

// 输出HTML文档中某个元素的HTML代码
Element div = doc.select("div").first();
System.out.println(div.outerHtml());

// 输出HTML文档中某个元素的文本内容
Element span = doc.select("span").first();
System.out.println(span.text());
处理异常

Jsoup在处理HTML文档时可能会遇到各种各样的异常,包括网络连接异常、文档格式不正确等等。为了避免出现异常导致程序崩溃,我们需要使用try-catch语句处理异常:

try {
    Document doc = Jsoup.connect("https://www.baidu.com").get();
} catch (IOException e) {
    System.out.println("无法连接到服务器");
}
总结

Jsoup是一个非常方便的Java HTML解析库,可以快速抓取并解析HTML文档,支持CSS选择器和jQuery语法等方式,易于上手,非常适合进行Web爬虫和数据挖掘等任务。