我使用HttpClient访问特定网站,我得到的回复是HTML格式。哪个解析器或方法我应该使用解析器HTML并从响应中获取我想要的内容。 注意:我使用带有Java的HttpClient
答案 0 :(得分:4)
使用jsoup。
jsoup
是一个用于处理真实HTML的Java库。它 提供了一个非常方便的API来提取和操作数据, 使用最好的DOM,CSS和类似jquery的方法。
jsoup
实现了WHATWG HTML5规范,并将HTML解析为 与现代浏览器相同的DOM。
- 从网址,文件或字符串中抓取并解析HTML
- 使用DOM遍历或CSS选择器查找和提取数据
- 操纵HTML元素,属性和文本
- 针对安全白名单清除用户提交的内容,以防止XSS攻击
- 输出整洁的HTML
jsoup旨在处理中发现的各种HTML 野生;从原始和验证到无效的标签汤; jsoup会 创造一个明智的解析树。
答案 1 :(得分:1)
我会试试htmlcleaner。
HTMLCleaner是一个Java库,用于安全地解析和转换在Web上找到的任何HTML到格式良好的XML。它设计小巧,快速,灵活且独立。 HtmlCleaner可用于java代码,命令行工具或Ant任务。解析的结果是轻量级文档对象模型,可以很容易地转换为DOM或JDom等标准,或者以各种方式序列化为XML输出(紧凑,漂亮的打印等)。
你可以使用XPath
和htmlcleaner来获取xml / html标签内的内容。这是一个不错的选择
例如Xpath Example
答案 2 :(得分:0)
使用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();
...