[英]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個輸出文件,對於此示例:
一言以蔽之
n1 n2 n3 This is a question sentence ... some other words ...
所有句子合一
This is a sentence
所有問題之一
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解析器,例如
https://zh.wikipedia.org/wiki/Comparison_of_HTML_parsers
謝謝,Vineet
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.