簡體   English   中英

JSoup-按標簽解析HTML標簽

[英]JSoup - Parse HTML tag by tag

我實際上是在用Java開發文本解析器,有人要求我通過使用它解析HTML來增強它。 解析器的目的是將解析后的文件分為其他三個文件,一個包含文件中包含的所有單詞,一個包含所有句子,另一個包含所有問題。

* .txt部分工作正常,但是在解析HTML時出現問題。

我創建一個擴展名為* .txt的臨時文件,並將其傳遞到文本解析器中,但是如果我傳遞一個帶有HTML文件鏈接的URL,其格式如下:

<!DOCTYPE html>
    <head>
        ... some HTML here ...
    </head>
    <body>
        <ul class="some_menu">
            <li class="some_menu_item">n1</li>
            <li class="some_menu_item">n2</li>
            <li class="some_menu_item">n2</li>
        </ul>
        <div>
            This is a question ?
            This is a sentence .
            ... some other text ...
        </div>
    </body>
</html>

問題文件將充滿: n1 n2 n3 This is a question

因此,我只是想知道,是否有一種方法可以按標簽解析JSoup標簽,以便每次關閉塊時都可以添加換行符?

如果您需要一些新信息,請不要問!

編輯:我應該有3個輸出文件,對於此示例:

  1. 一言以蔽之

     n1 n2 n3 This is a question sentence ... some other words ... 
  2. 所有句子合一

     This is a sentence 
  3. 所有問題之一

     This is a question 

蒂米

要獲取html正文中的所有文本,可以使用:

Document doc = Jsoup.connect(url).get();
Elements body = doc.select("body");
String allText = body[0].text();

然后,您可以拆分文本以使每個單詞分開。 要在div標簽中獲取文本,可以使用:

Elements div = doc.select("div");
String divText = div[0].text();

然后,您可以拆分divText以獲取每個句子。

請注意,選擇查詢的返回類型實際上是Element的列表,即Elements。 這是因為select查詢可以包含多個匹配的元素。 在這種情況下,由於每種情況只有一個元素,因此我們通過訪問返回數組的索引0來訪問它。

編輯:為了遍歷所有元素,請檢查此答案 基本上

Elements elements = doc.body().select("*");

for (Element element : elements) {
    System.out.println(element.text());
}

盡管可能有些元素沒有文本,所以您可以對此進行檢查。

市場上有很多HTML解析器,例如

  1. HTMLUnit
  2. HTMLCleaner
  3. 耶利哥

https://zh.wikipedia.org/wiki/Comparison_of_HTML_parsers

謝謝,Vineet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM