2012-01-10 107 views
2

我使用HttpClient访问一个particualr网站,我得到的响应是HTML格式。我应该使用解析器的HTML解析器或方法,并从响应中获得我想要的内容。 注意:我使用HttpClient和Java一起使用HTML解析器响应 - Java

+0

可能重复[哪个Html解析器是最好的?](http://stackoverflow.com/questions/2168610/which-html-parser-is-best) – 2012-01-10 22:50:22

+1

我upvoted两个。 Java库中的html解析非常糟糕;别的什么会更好。 – Bill 2012-01-10 23:27:05

回答

4

使用jsoup

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

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

  • 刮,并使用DOM遍历或CSS选择
  • 操纵HTML元素从一个URL,文件或字符串
  • 查找和提取数据,解析HTML,属性和文本
  • 干净的用户提交的内容对一个安全白名单,以防止XSS攻击
  • 输出整洁HTML

jsoup是专门用来对付所有品种Ø f在HTML中发现 狂野;从原始和验证,到无效的标签汤; jsoup将 创建一个合理的分析树。

1

我会给htmlcleaner一试。

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

您可以使用XPath与htmlcleaner得到XML中的内容/ HTML tags.Here是一个很好的
例如Xpath Example

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(); 
...