繁体   English   中英

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

[英]How can I efficiently parse HTML with Java?

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

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

我想使用一个轻量级的 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();

有关详细信息,请参阅选择器javadoc。

这是一个新项目,因此非常欢迎任何改进的想法!

到目前为止我见过的最好的是HtmlCleaner

HtmlCleaner 是用 Java 编写的开源 HTML 解析器。 在 Web 上发现的 HTML 通常是脏的、格式错误的并且不适合进一步处理。 对于此类文档的任何严重消费,首先需要清理混乱,并为标签、属性和普通文本排序。 对于给定的 HTML 文档,HtmlCleaner 重新排序各个元素并生成格式良好的 XML。 默认情况下,它遵循大多数 Web 浏览器用于创建文档对象模型的类似规则。 但是,用户可以为标签过滤和平衡提供自定义标签和规则集。

使用 HtmlCleaner,您可以使用 XPath 定位任何元素。

对于其他 html 解析器,请参见这个 SO question

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM