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

标签 java html parsing html-parsing web-scraping

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

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

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

Selector javadoc 了解更多信息。

这是一个新项目,欢迎提出任何改进意见!

关于java - 如何使用 Java 有效地解析 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2168610/

相关文章:

java - 如何正确建模复杂的层次结构并与 hibernate 交互

java - 跟随 google "I' m feeling lucky"使用 httpURLConnection 重定向

java - 通过命令行上传 Java Elastic Beanstalk 应用程序

java - 如何遍历 N 叉树

html - 如何使用 jQuery Mobile 构建一个 2 x 2 的按钮网格?

javascript - 在 AJAX 成功响应中执行 Javascript 代码(在单独的文件中)?

html - 在一个元素上使用超过 1 个 CSS 类的正确方法是什么?

linux - 在 bash 中解析 CSV 并分配变量

parsing - 使解析器忽略所有多余的空格

python - 解析文本文件中的值