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