📅  最后修改于: 2023-12-03 14:43:35.149000             🧑  作者: Mango
Jsoup是一个Java的HTML解析器,可用于从网络上抓取HTML并解析,支持CSS选择器、jQuery语法等方式,可以对HTML文档进行增删改查等操作。
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
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选择器查找元素
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文档
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爬虫和数据挖掘等任务。