我在工作中进行了大量的 HTML 解析。到目前为止,我一直在使用 HtmlUnit 无头浏览器进行解析和浏览器自动化。
现在,我想将这两个任务分开。
我想使用轻量级 HTML 解析器,因为在 HtmlUnit 中首先加载页面,然后获取源代码并解析它需要花费很多时间。
我想知道哪个HTML解析器可以有效地解析HTML。我需要
如果它不清除脏的 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 了解更多信息。
这是一个新项目,因此非常欢迎任何改进的想法!
迄今为止我见过的最好的是HtmlCleaner:
HtmlCleaner 是用 Java 编写的开源 HTML 解析器。 Web 上的 HTML 通常是脏的、格式错误的并且不适合进一步处理。对于此类文档的任何严重消耗,有必要首先清理混乱并为标签、属性和普通文本带来顺序。对于给定的 HTML 文档,HtmlCleaner 会对各个元素重新排序并生成格式正确的 XML。默认情况下,它遵循大多数 Web 浏览器用于创建文档对象模型的类似规则。但是,用户可以提供自定义标签和规则集以进行标签过滤和平衡。
使用 HtmlCleaner,您可以使用 XPath 定位任何元素。
对于其他 html 解析器,请参阅 这个 SO 问题。
我建议Validator.nu的解析器,基于HTML5解析算法。 这是Mozilla从2010-05-03开始使用的解析器