這又是個看似簡單卻要折騰很久達不到完美效果的需求。
1.直接得到字符串
document.text()
,丟失了換行
2.解析p 解析h1 解析div 萬一別人用的不是這3標簽 或者彼此嵌套 都會存在問題
或者干脆
document.select(‘*’)
去重復過程去嵌套過程更麻煩甚至不可為,有的文本內(nèi)容本來就是重復的,那么有沒有保留換行的提取文本
3.保留換行的提取文本
Jsoup.clean(jsArticleDetail.toString(), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
這個保留了換行但是網(wǎng)頁網(wǎng)上的具體幾個空格仍然不理想,那么只有把多余的空行換成\n了,雖然可能會替換原本確實存在的空格,但是是目前最接近需求的結(jié)果了
String baseContent = Jsoup.clean(jsArticleDetail.toString(), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
String newText = baseContent.replaceAll("\s+", "\n");
//去掉收尾多余的空格
String trueContent = newText.replaceFirst("\n", "").trim();
4.優(yōu)化
我們可以再優(yōu)化一下,當大于2個空格的時候我們再進行替換成\n,那文章中非要有2個多空格也沒有更好的方法。 你也可以根據(jù)實際情況把2改為 其他數(shù)字 根據(jù)你解析的網(wǎng)頁進行調(diào)整
String baseContent = Jsoup.clean(jsArticleDetail.toString(), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
String newText = baseContent.replaceAll("\s{2,}", "\n");
String trueContent = newText.replaceFirst("\n", "").trim();
特別感謝正則提供LX HAH
作者:Rex葉然
來源:CSDN
原文:https://blog.csdn.net/qq_28844947/article/details/88689710
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!