java - 如何使用 Java 有效地解析 HTML?

我在我的工作中做了很多 HTML 解析。到目前为止,我一直在使用 HtmlUnit headless 浏览器进行解析和浏览器自动化。

现在,我想将这两个任务分开。

我想使用一个轻量级的 HTML 解析器,因为在 HtmlUnit 中首先加载一个页面,然后获取源代码然后解析它需要很长时间。

我想知道哪个 HTML 解析器可以有效地解析 HTML。我需要

  1. 速度
  2. 通过“id”或“名称”或“标签类型”轻松定位任何 HtmlElement。

如果它不清理脏的 HTML 代码对我来说没问题。我不需要清理任何 HTML 源代码。我只需要一种最简单的方法来跨 HtmlElements 移动并从中收集数据。

最佳答案

自插件:我刚刚发布了一个新的 Java HTML 解析器:jsoup .我在这里提到它是因为我认为它会满足您的需求。

它的派对技巧是使用 CSS 选择器语法来查找元素,例如:

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Elements links = doc.select("a");
Element head = doc.select("head").first();

见 Selector javadoc 了解更多信息。

这是一个新项目,欢迎提出任何改进意见!

https://stackoverflow.com/questions/2168610/

相关文章:

html - 如何让 HTML 5 输入类型 ="date"在 Firefox 和/或 IE 10

html - 表格固定标题和可滚动正文

html - 如何在 div 中使按钮居中?

image - 如何在保持图像纵横比的同时拉伸(stretch)图像以填充

html - 为什么类型为 "number"的 html 输入允许在字段中输入字母 'e'?

html - 如何删除css中的背景图像?

html - 如何更改 Canvas 元素中元素的不透明度(alpha、透明度)?

html - 有必要写 HEAD、BODY 和 HTML 标签吗?

html - 将居中文本添加到水平线的中间

javascript - 获取元素的父div