我编写了很多解析器。到目前为止,我使用HtmlUnit无头浏览器进行解析和浏览器自动化。
现在,我想分开两个任务。
由于80%的工作只涉及解析,我想使用轻量级HTML解析器,因为在HtmlUnit中首先加载页面需要花费很多时间,然后获取源然后解析它。
我想知道哪种HTML解析器最好。如果它接近HtmlUnit解析器,解析器会更好。
修改
最好的,我至少需要以下功能:
如果它不清除脏HTML代码,那对我来说没问题。我不需要清理任何HTML源代码。我只需要一种最简单的方法来移动HtmlElements并从中收集数据。
答案 0 :(得分:381)
自我插件:我刚刚发布了一个新的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。
这是一个新项目,所以非常欢迎任何改进的想法!
答案 1 :(得分:32)
到目前为止,我见过的最好的是HtmlCleaner:
HtmlCleaner是用Java编写的开源HTML解析器。在Web上找到的HTML通常很脏,格式不正确,不适合进一步处理。对于任何严重消费此类文件,有必要首先清理混乱并将订单带到标签,属性和普通文本。对于给定的HTML文档,HtmlCleaner重新排序单个元素并生成格式良好的XML。默认情况下,它遵循大多数Web浏览器用于创建文档对象模型的类似规则。但是,用户可以为标签过滤和平衡提供自定义标签和规则集。
使用HtmlCleaner,您可以使用XPath找到任何元素。
对于其他html解析器,请参阅this SO question。
答案 2 :(得分:9)