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

标签 java html information-retrieval jsoup

更新

Boilerpipe 似乎工作得很好,但我意识到我不仅需要主要内容,因为很多页面没有文章,而只需要带有一些简短描述的链接到整个文本(这在新闻中很常见门户),我不想丢弃这些短文本。

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


问题

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

问题是网页有很多内容,如菜单、宣传、横幅等。

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

以这个页面为例,我不想要上面的菜单,也不想要页脚的链接。

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

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

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

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

我尝试了一种方法来解析这个问题中描述的 HTML 内容:https://stackoverflow.com/questions/7035150/how-to-traverse-the-dom-tree-using-jsoup-doing-some-content-filtering

最佳答案

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

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

您可以use a URL :

ArticleExtractor.INSTANCE.getText(url);

您可以use a String :

ArticleExtractor.INSTANCE.getText(myHtml);

还有 use a Reader 的选项,这会打开大量的选项。

关于java - 如何仅从 HTML 页面中提取主要文本内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7021260/

相关文章:

html - css 三 Angular 形缺少提示

java - 如何打印文件中的链接,然后使用它来引用java中另一个文件中的术语

java - 如何在java中创建新的拨号连接?

java - 线程中的 NoClassDefFoundError

php - 如何链接到不同站点上的同一页面?

c++ - C/C++ 中的文本索引库

statistics - 如何在 mahout 中解释 IRStatisticsImpl 数据

java - 在 Android 中使用 .contains() 关键字的字符串匹配

java - Spring Java 包中的实体列表

jquery - 如何在点击/加载时滑入新加载的图像