Java读取HTML文件的最佳实践是什么?有哪些简单易行的方法?
- 后端开发
- 2025-10-25
- 7
Java读取HTML的方法有多种,以下是一些常用的方法:
使用Java内置的HTML解析器
Java内置的HTML解析器是DocumentBuilderFactory和DocumentBuilder,以下是一个简单的示例:
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; import java.io.File; public class Main { public static void main(String[] args) { try { File inputFile = new File("input.html"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(inputFile); doc.getDocumentElement().normalize(); System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); NodeList nList = doc.getElementsByTagName("title"); System.out.println(""); for (int temp = 0; temp < nList.getLength(); temp++) { Node nNode = nList.item(temp); if (nNode.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) nNode; System.out.println("Title : " + eElement.getTextContent()); } } } catch (Exception e) { e.printStackTrace(); } } }
使用Jsoup库
Jsoup是一个Java库,用于解析HTML,它提供了一个非常简洁的API来解析HTML,提取和操作数据。

你需要添加Jsoup库到你的项目中,如果你使用Maven,可以在pom.xml中添加以下依赖:
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.14.3</version> </dependency>
你可以使用以下代码来读取HTML:
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Main { public static void main(String[] args) { try { Document doc = Jsoup.connect("http://example.com").get(); System.out.println("Title: " + doc.title()); Elements links = doc.select("a[href]"); for (Element link : links) { System.out.println("Link: " + link.attr("href")); System.out.println("Text: " + link.text()); } } catch (Exception e) { e.printStackTrace(); } } }
使用HTMLCleaner库
HTMLCleaner是一个Java库,用于清理HTML代码,它可以删除不必要的空白字符,修复错误的HTML标签等。

你需要添加HTMLCleaner库到你的项目中,如果你使用Maven,可以在pom.xml中添加以下依赖:
<dependency> <groupId>net.htmlparser.jericho</groupId> <artifactId>jerichohtml</artifactId> <version>3.1</version> </dependency>
你可以使用以下代码来读取HTML:
import net.htmlparser.jericho.ElementNotFoundException; import net.htmlparser.jericho.Source; public class Main { public static void main(String[] args) { try { Source source = new Source("input.html"); System.out.println("Title: " + source.getTextExtractor().extractText("title")); System.out.println("Body: " + source.getTextExtractor().extractText("body")); } catch (ElementNotFoundException e) { e.printStackTrace(); } } }
以下是一个表格,归纳了上述方法的优缺点:
| 方法 | 优点 | 缺点 |
|---|---|---|
| Java内置解析器 | 无需额外依赖 | 功能有限,解析能力较弱 |
| Jsoup | 功能强大,易于使用 | 需要添加外部库 |
| HTMLCleaner | 功能强大,可以清理HTML代码 | 需要添加外部库 |
FAQs
Q1:Java内置的HTML解析器是否足够强大?
A1:Java内置的HTML解析器功能有限,对于简单的HTML解析可能足够,但对于复杂的HTML文档,它的解析能力较弱。
Q2:Jsoup和HTMLCleaner哪个更好?
A2:这取决于你的具体需求,Jsoup功能更全面,易于使用,适合大多数场景,HTMLCleaner则专注于清理HTML代码,如果你需要处理大量的HTML文档,并且需要清理和修复HTML标签,那么HTMLCleaner可能更适合你。
