一尘不染

如何仅从HTML页面提取主要文本内容?

java

更新资料

Boilerpipe看起来确实工作得很好,但是我意识到我并不需要主要内容,因为许多页面上没有文章,而只是带有简短描述的链接到整个文本(这在新闻门户网站中很常见),并且我不想丢弃这些短裤文字。

因此,如果API执行此操作,请获取不同的文本部分/以某种方式将每个部分分开的块,这些块与单个文本不同(仅在一个文本中没有用),请报告。


问题

我从随机站点下载了一些页面,现在我想分析页面的文本内容。

问题是网页上有很多内容,例如菜单,宣传,标语等。

我想尝试排除与页面内容无关的所有内容。

以该页面为例,我不希望页脚中的链接上方的菜单。

重要提示: 所有页面均为HTML,并且是来自不同站点的页面。我需要如何排除这些内容的建议。

目前,我认为是从HTML和看起来像专有名称(第一个大写字母)的连续单词中排除“菜单”和“横幅”类中的内容。

解决方案可以基于文本内容(不带HTML标签)或基于HTML内容(带HTML标签)

编辑: 我想在我的Java代码中执行此操作,而不是在外部应用程序中执行此操作(如果可以的话)。


阅读 329

收藏
2020-12-03

共1个答案

一尘不染

看一看Boilerpipe。它旨在完全满足您的需求,消除网页主要文本内容周围多余的“混乱”(样板,模板)。

有几种方法可以将HTML馈入Boilerpipe并提取HTML。

您可以使用URL

ArticleExtractor.INSTANCE.getText(url);

您可以使用String

ArticleExtractor.INSTANCE.getText(myHtml);

还有一些使用Reader的选项,这会打开很多选项。

2020-12-03