您好,登录后才能下订单哦!
jsoup 是一款用于解析 HTML 的 Java 库,它提供了非常方便的 API 来提取和操作数据。jsoup 的主要功能包括:
jsoup 的设计目标是尽可能地模拟浏览器解析 HTML 的方式,因此它能够处理各种复杂的 HTML 文档,并且能够很好地处理不规范的 HTML。
如果你使用 Maven 来管理项目依赖,可以在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
你也可以从 jsoup 官方网站 下载最新的 JAR 文件,并将其添加到项目的类路径中。
jsoup 可以从多种来源解析 HTML,包括 URL、文件和字符串。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupExample {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("https://example.com").get();
System.out.println(doc.title());
}
}
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
File input = new File("path/to/file.html");
Document doc = Jsoup.parse(input, "UTF-8", "https://example.com/");
System.out.println(doc.title());
}
}
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupExample {
public static void main(String[] args) {
String html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
System.out.println(doc.title());
}
}
jsoup 提供了多种方式来提取 HTML 文档中的数据,最常用的是使用 CSS 选择器。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupExample {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("https://example.com").get();
Elements links = doc.select("a[href]");
for (Element link : links) {
System.out.println(link.attr("href") + " " + link.text());
}
}
}
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupExample {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("https://example.com").get();
Element content = doc.getElementById("content");
System.out.println(content.text());
}
}
jsoup 不仅可以提取数据,还可以修改 HTML 文档。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupExample {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("https://example.com").get();
Element link = doc.select("a").first();
link.attr("href", "https://newurl.com");
System.out.println(link);
}
}
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupExample {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("https://example.com").get();
Element link = doc.select("a").first();
link.text("New Text");
System.out.println(link);
}
}
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupExample {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("https://example.com").get();
Element div = doc.select("div").first();
div.append("<p>New paragraph</p>");
System.out.println(div);
}
}
jsoup 提供了清理 HTML 的功能,可以防止 XSS 攻击。
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
public class JsoupExample {
public static void main(String[] args) {
String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());
System.out.println(safe);
}
}
jsoup 可以方便地处理 HTML 表单,包括提交表单和获取表单数据。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupExample {
public static void main(String[] args) throws Exception {
Document doc = Jsoup.connect("https://example.com/login").get();
Element form = doc.select("form").first();
Elements inputs = form.select("input");
for (Element input : inputs) {
System.out.println(input.attr("name") + " " + input.attr("value"));
}
}
}
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
Connection.Response loginForm = Jsoup.connect("https://example.com/login")
.method(Connection.Method.GET)
.execute();
Document loginDoc = loginForm.parse();
String csrfToken = loginDoc.select("input[name=csrf_token]").attr("value");
Connection.Response loginResponse = Jsoup.connect("https://example.com/login")
.data("username", "user")
.data("password", "pass")
.data("csrf_token", csrfToken)
.cookies(loginForm.cookies())
.method(Connection.Method.POST)
.execute();
System.out.println(loginResponse.statusCode());
}
}
jsoup 可以方便地处理 Cookie,包括获取和设置 Cookie。
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
Connection.Response response = Jsoup.connect("https://example.com")
.method(Connection.Method.GET)
.execute();
Document doc = response.parse();
System.out.println(doc.title());
Connection.Response loginResponse = Jsoup.connect("https://example.com/login")
.data("username", "user")
.data("password", "pass")
.cookies(response.cookies())
.method(Connection.Method.POST)
.execute();
System.out.println(loginResponse.statusCode());
}
}
jsoup 默认会跟随重定向,但你可以通过设置 followRedirects(false)
来禁用重定向。
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
Connection.Response response = Jsoup.connect("https://example.com")
.followRedirects(false)
.execute();
System.out.println(response.statusCode());
System.out.println(response.header("Location"));
}
}
jsoup 默认的超时时间是 30 秒,你可以通过设置 timeout(int milliseconds)
来修改超时时间。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://example.com")
.timeout(5000)
.get();
System.out.println(doc.title());
}
}
jsoup 支持通过代理访问网页。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://example.com")
.proxy("proxy.example.com", 8080)
.get();
System.out.println(doc.title());
}
}
如果你遇到 SSL 证书问题,可以通过设置 validateTLSCertificates(false)
来禁用 SSL 证书验证。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://example.com")
.validateTLSCertificates(false)
.get();
System.out.println(doc.title());
}
}
如果你遇到中文乱码问题,可以通过设置 charset
来指定字符编码。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://example.com")
.header("Accept-Charset", "UTF-8")
.get();
System.out.println(doc.title());
}
}
如果你遇到 403 错误,可以通过设置 userAgent
来模拟浏览器访问。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
public class JsoupExample {
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://example.com")
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
.get();
System.out.println(doc.title());
}
}
jsoup 是一款功能强大且易于使用的 Java HTML 解析库,它能够处理各种复杂的 HTML 文档,并且提供了丰富的 API 来提取和操作数据。通过本文的介绍,你应该已经掌握了 jsoup 的基本用法和一些高级技巧。希望你在实际项目中能够灵活运用 jsoup,提高开发效率。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。