首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Jsoup抓取的文本中删除多个字符10

从Jsoup抓取的文本中删除多个字符10
EN

Stack Overflow用户
提问于 2016-01-19 05:15:10
回答 1查看 259关注 0票数 0

我有相当多的文件(大约600个),其中包含我用Jsoup抓取的文本。文本只包含<p><br>中的超文本标记语言,以尝试保留文本中某些段落的形式。问题是在某些文件中有一长串新行,Java将它们读作字符10。在某些情况下,大约有30行左右,比如有人按住了Enter键。

我知道,由于<br>标签,换行符出现在那里主要是我的错,但找不到一种方法来只保留一个换行符,并在抓取时丢弃其余的换行符。

这是我正在使用的Jsoup代码的一部分(来自How do I preserve line breaks when using jsoup to convert html to plain text?)

代码语言:javascript
复制
Document document = Jsoup.connect(url).get();
document.outputSettings(new Document.OutputSettings().prettyPrint(false));//preserve html linebreaks
document.select("br").append("\\n");
document.select("p").prepend("\\n\\n");
document.select(":containsOwn(\u00a0)").remove();
String s = document.html().replaceAll("\\\\n", "\n");
String txtOnly = Jsoup.clean(s, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));

有没有可能以某种方式清理文件的内容,而不实际重新运行抓取过程?我曾尝试使用HashSet,以便只保留一个字符10,然后当到达行尾时,打印该组中唯一的字符10。但不知何故,它并没有起作用。

对于如何做这件事,有什么好的建议吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-19 06:33:28

在HTML中,所有包含1个或更多空格字符(包括换行符,如字符10)的序列都等同于一个空格。您可以使用正则表达式将一连串的空白字符替换为单个空格。然后做你的

替换以在适当的位置插入换行符。

代码语言:javascript
复制
public static void processHtml(String html) {
    html = normalizeHtmlWhitespace(html);
    html = html.replace("<br>", "\n");
    // more robust code would use a real HTML parser to do the <br> replacement
}

public static String normalizeHtmlWhitespace(String html) {
    return html.replaceAll("\\s+", " ");
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34864215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档