更新
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/