2

我使用 HttpClient 访问一个特定的网站,我得到的响应是 HTML 的形式。我应该使用哪个解析器或方法解析 HTML 并从响应中获取我想要的内容。注意:我在 Java 中使用 HttpClient

4

3 回答 3

4

使用jsoup

jsoup是一个用于处理真实世界 HTML 的 Java 库。它提供了一个非常方便的 API 用于提取和操作数据,使用最好的 DOM、CSS 和类似 jquery 的方法。

jsoup实现了 WHATWG HTML5 规范,并将 HTML 解析为与现代浏览器相同的 DOM。

  • 从 URL、文件或字符串中抓取和解析 HTML
  • 使用 DOM 遍历或 CSS 选择器查找和提取数据
  • 操作 HTML 元素、属性和文本
  • 根据安全白名单清理用户提交的内容,以防止 XSS 攻击
  • 输出整洁的 HTML

jsoup 旨在处理各种常见的 HTML;从原始和验证到无效标签汤;jsoup 将创建一个合理的解析树。

于 2012-01-10T22:46:14.487 回答
1

我会试试htmlcleaner

HTMLCleaner 是一个 Java 库,用于安全地将 Web 上的任何 HTML 解析和转换为格式良好的 XML。它被设计成小巧、快速、灵活和独立。HtmlCleaner 可用于 java 代码,作为命令行工具或 Ant 任务。解析的结果是轻量级的文档对象模型,可以轻松地转换为 DOM 或 JDom 等标准,或以各种方式(紧凑、漂亮打印等)序列化为 XML 输出。

您可以使用XPathhtmlcleaner 来获取 xml/html 标签中的内容。这是一个很好的
示例Xpath Example

于 2012-01-10T22:50:54.223 回答
1

带有 jsoup 和 Java8 的示例代码:

// Imports:
...
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;
...

// Execute the GET request:
...
HttpClient clientGet = HttpClientBuilder.create().build();
HttpGet get = new HttpGet(url);
HttpResponse res = clientGet.execute(get);

// Use jsoup to parse the html response:
// E.g. find all links with reference to myapp:
//  <a href="myapp">HelloWorldApp</a>
Document doc = Jsoup.parse(IOUtils.toString(res.getEntity().getContent(), StandardCharsets.UTF_8));
Elements links = doc.select("a[href~=myapp]");
for (Element link : links)
    String appName = link.html();
...
于 2017-08-02T08:06:20.730 回答