這又是個(gè)看似簡(jiǎn)單卻要折騰很久達(dá)不到完美效果的需求。
1.直接得到字符串
document.text()
,丟失了換行
2.解析p 解析h1 解析div 萬(wàn)一別人用的不是這3標(biāo)簽 或者彼此嵌套 都會(huì)存在問(wèn)題
或者干脆
document.select(‘*’)
去重復(fù)過(guò)程去嵌套過(guò)程更麻煩甚至不可為锣尉,有的文本內(nèi)容本來(lái)就是重復(fù)的误堡,那么有沒(méi)有保留換行的提取文本
3.保留換行的提取文本
Jsoup.clean(jsArticleDetail.toString(), "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
這個(gè)保留了換行但是網(wǎng)頁(yè)網(wǎng)上的具體幾個(gè)空格仍然不理想,那么只有把多余的空行換成\n了星著,雖然可能會(huì)替換原本確實(shí)存在的空格,但是是目前最接近需求的結(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)化一下,當(dāng)大于2個(gè)空格的時(shí)候我們?cè)龠M(jìn)行替換成\n俄占,那文章中非要有2個(gè)多空格也沒(méi)有更好的方法。 你也可以根據(jù)實(shí)際情況把2改為 其他數(shù)字 根據(jù)你解析的網(wǎng)頁(yè)進(jìn)行調(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葉然
來(lái)源:CSDN
原文:https://blog.csdn.net/qq_28844947/article/details/88689710
版權(quán)聲明:本文為博主原創(chuàng)文章剥汤,轉(zhuǎn)載請(qǐng)附上博文鏈接!