2012-01-10 111 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(); 
...