哪个HTML Parser最好?

Yat*_*oel 187 html java parsing html-parsing web-scraping

我编写了很多解析器.到目前为止,我使用HtmlUnit无头浏览器进行解析和浏览器自动化.

现在,我想分开两个任务.

由于80%的工作只涉及解析,我想使用轻量级HTML解析器,因为在HtmlUnit中首先加载页面需要花费很多时间,然后获取源然后解析它.

我想知道哪个HTML解析器是最好的.如果它接近HtmlUnit解析器,解析器会更好.


编辑:

最好的,我至少需要以下功能:

  1. 速度
  2. 通过"id"或"name"或"tag type"轻松找到任何HtmlElement.

如果它不清除脏HTML代码,那对我来说没问题.我不需要清理任何HTML源代码.我只需要一种最简单的方法来移动HtmlElements并从中获取数据.

Jon*_*ley 387

自我插件:我刚刚发布了一个新的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();
Run Code Online (Sandbox Code Playgroud)

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

这是一个新项目,所以任何改进的想法都是非常受欢迎的!

  • 请不要停止支持这一点.这正是我们使用服务器端Java解析HTML所需要的!这太棒了!我在几个小时内构建了一个代理,它修改了所有的src和href链接,使它们成为原始服务器的完整路径. (17认同)
  • 这件事太棒了,我喜欢CSS选择器支持.我几乎不知道我正在使用Java库.:-) (14认同)
  • 令人难以置信,这太麻烦了.我能够在几分钟内处理HTML页面.非常感谢这项伟大的工作. (10认同)
  • 我刚刚看了一眼.我喜欢它的界面和文档.这很容易理解.:) (7认同)
  • 不错的工作!在不到10分钟的时间内完成并运行. (5认同)
  • 真棒工具!用20行代码完成我的任务(包括导入...大声笑) (3认同)
  • jsoup - >快速简便! (3认同)
  • 简直太棒了,我根据你的工作撰写了一篇文章.非常感谢你节省我的时间;)http://codingx.blogspot.be/2014/01/java-how-to-parse-html-document.html (2认同)

tan*_*ens 32

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

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

使用HtmlCleaner,您可以使用XPath找到任何元素.

对于其他HTML解析器,请参阅此SO问题.

  • 您必须自己处理代理,然后使用 HtmlCleaner 来处理您的流。=&gt; 不方便。T__T (2认同)
  • “大多数网络浏览器使用的类似规则” - 这不太令人信服 (2认同)

Ms2*_*ger 9

我建议使用Validator.nu的解析器,基于HTML5解析算法.它是2010-05-03在Mozilla中使用的解析器

  • 我试过这个,发现它很难使用.很少的文档/支持. (2认同)