java如何解析html页面
使用 Jsoup 解析 HTML
Jsoup 是一个流行的 Java HTML 解析库,能够方便地从 HTML 中提取数据或操作 DOM 结构。
引入 Jsoup 依赖(Maven):
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.16.1</version>
</dependency>
解析 HTML 字符串:
String html = "<html><head><title>示例</title></head><body><p>内容</p></body></html>";
Document doc = Jsoup.parse(html);
String title = doc.title();
Elements paragraphs = doc.select("p");
从 URL 加载 HTML:
Document doc = Jsoup.connect("https://example.com").get();
使用 Java 内置 XML 解析器
对于符合 XHTML 规范的文档,可以使用 Java 内置的 XML 解析器(如 DOM 或 SAX)。

DOM 解析示例:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(html)));
NodeList nodes = doc.getElementsByTagName("p");
使用 HTMLCleaner
HTMLCleaner 是另一个轻量级 HTML 解析库,适合处理不太规范的 HTML。
引入依赖:

<dependency>
<groupId>net.sourceforge.htmlcleaner</groupId>
<artifactId>htmlcleaner</artifactId>
<version>2.29</version>
</dependency>
使用示例:
HtmlCleaner cleaner = new HtmlCleaner();
TagNode node = cleaner.clean(new URL("https://example.com"));
Object[] nodes = node.evaluateXPath("//p");
使用 Jericho HTML Parser
Jericho 提供了流式解析能力,适合处理大型 HTML 文件。
引入依赖:
<dependency>
<groupId>net.htmlparser.jericho</groupId>
<artifactId>jericho-html</artifactId>
<version>3.4</version>
</dependency>
使用示例:
Source source = new Source(new File("input.html"));
List<Element> elements = source.getAllElements("div");
选择解析器的考虑因素
- Jsoup:最适合大多数场景,API 友好,支持 CSS 选择器
- 内置 XML 解析器:仅适用于严格规范的 XHTML
- HTMLCleaner:对畸形 HTML 容忍度较高
- Jericho:适合流式处理大文件,内存效率高
对于现代 Java 项目,Jsoup 通常是首选方案,因其平衡了功能完备性和易用性。需要处理复杂选择器查询时,其 CSS 选择器支持能显著简化代码。






