当前位置: 首页 > 面试题库 >

jsoup-剥离所有格式和链接标签,仅保留文本

公羊安怡
2023-03-14
问题内容

假设我有一个这样的html片段:

<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>

我想从中提取的是:

foo bar foobar baz

所以我的问题是:如何从html中剥离所有包装标签,并仅以与html中相同的顺序获取文本?正如您在标题中看到的那样,我想使用jsoup进行解析。

重音html的示例(注意’á’字符):

<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>
<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>

我想要的是:

Tarthatatlan biztonsági viszonyok
Tarthatatlan biztonsági viszonyok

这个html并不是静态的,通常我只希望通用html片段的每个文本都以已解码的人类可读形式显示,宽度换行。


问题答案:

使用Jsoup:

final String html = "<p> <span> foo </span> <em> bar <a> foobar </a> baz </em> </p>";
Document doc = Jsoup.parse(html);

System.out.println(doc.text());

输出:

foo bar foobar baz

如果只需要p-tag的文本,请使用它代替doc.text()

doc.select("p").text();

…或仅身体:

doc.body().text();

越线:

final String html = "<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>"
        + "<p><strong>Tarthatatlan biztonsági viszonyok</strong></p>";
Document doc = Jsoup.parse(html);

for( Element element : doc.select("p") )
{
    System.out.println(element.text());
    // eg. you can use a StringBuilder and append lines here ...
}

输出:

Tarthatatlan biztonsági viszonyok  
Tarthatatlan biztonsági viszonyok


 类似资料:
  • 假设我有一个像这样的html片段: 我想从中得到的是: 所以我的问题是:如何从html中去掉所有包装标签,只得到与html中相同顺序的文本?正如您在标题中看到的,我想使用jsoup进行解析。 重音html示例(请注意“á”字符): 我想要的是: 这个html不是静态的,一般来说,我只是想解码人类可读形式的通用html片段的每一个文本,宽度线中断。

  • 问题内容: 我正在尝试使用Jsoup删除HTML页面的标签之间的所有文本 例如,如果输入的HTML是 输出应为 基本上,我想删除由返回的内容 我发现有很多帖子是相反的,只保留文本,而没有什么可以解决我的问题。有关如何执行此操作的任何想法? 编辑 maverick9999提出的解决方案将解决大多数情况。 但是,正如注释中所注意到的,此解决方案还将删除嵌套标签。 举个例子: 将在输出中删除一个div:

  • 问题内容: 我正在尝试使用BeautifulSoup从网页获取文本。 以下是我编写的脚本。它带有两个参数,第一个是输入HTML或XML文件,第二个是输出文件。 不幸的是,对于许多网页来说,例如:http : //www.greatjobsinteaching.co.uk/career/134112/Education- Manager- Location 我得到这样的信息(我只显示了几行): 我的

  • 我正在尝试使用 Jsoup 删除 HTML 页面标记之间的所有文本 例如,如果输入HTML是 输出应该是 基本上,我想删除返回的内容。 我找到了很多相反的帖子,只保留文本,但没有解决我的问题。知道怎么做吗? 编辑 maverick9999:https://stackoverflow.com/a/24292349/3589481提出的解决方案将解决大部分情况。 然而,正如评论中提到的,这个解决方案也

  • 我有下面的Java内容,我只想剥离html标记,而不是新行字符 如果我在文本丰富编辑器中打开上面的内容,第1行和第2行以不同的行显示(不显示

  • 问题内容: 我有这个HTML输入: 我想使用正则表达式删除HTML标记,以便输出为: 谁能建议使用正则表达式执行此操作? 问题答案: 您可以使用称为Jericho Html解析器的HTML解析器。 您可以从这里下载-http://jericho.htmlparser.net/docs/index.html Jericho HTML Parser是一个Java库,允许对HTML文档的各个部分(包括服