我正在尝试使用jSoup来允许Android WebView内的网页阅读器模式。
Document doc = Jsoup.parse(url,3000);
String justTheText = doc.text();
将此应用于CNN例如打印出每个菜单等等,因此并不是读者友好的。我想保留标题和文字,而不是摆脱图像。我需要以有序的方式呈现页面。
我需要的是保留图像,但丢弃无关的内容,并在文本中保留换行符。这必须是一般的,所以它适用于不同的页面。
如果我无法保留图像,并且必须将页面显示为纯文本,至少我需要一种方法来保留标题和换行符。而不是引入无关的文本和链接等。
答案 0 :(得分:1)
这确实不是一项微不足道的任务,虽然它绝对可行(iOS的阅读模式做得非常好)。
您需要先找到一种方法来了解要过滤的元素,例如省略菜单。您可以通过查看标记名称和/或类名称并省略特定标记/类来尝试执行此操作。
接下来,您要处理您想要包含的项目:获取包含文本的所有时间(并且可能在每行之后添加<br/>
),包括图像等。
这是让你入门的东西(需要Java 8):
doc.body().getAllElements().stream()
.filter(elem -> !elem.className().toLowerCase().matches(".*(menu|header|footer|logo|nav|search|link|button|btn|ad).*"))
.forEach(elem -> {
if (elem.hasText()) {
result.append(elem.text() + "<br/>");
}
if (elem.tagName().equals("img")) {
result.append(elem.toString());
}
});