首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从HTML页面中仅提取主要文本内容?

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

Stack Overflow用户
提问于 2011-08-11 13:36:14
回答 9查看 20.4K关注 0票数 22

更新

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

因此,如果API做到了这一点,获取不同的文本部分/以某种不同于单个文本的方式拆分每个部分的块(只在一个文本中都没有用),请报告。

问题是

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

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

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

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

要点:所有的页面都是超文本标记语言,并且是来自不同站点的页面。我需要如何排除这些内容的建议。

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

解决方案可以基于文本内容(没有HTML标记)或HTML内容(具有HTML标记)

我想在我的代码中做这件事,而不是在外部应用程序中(如果这是可能的话)。

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-08-13 23:52:46

看看Boilerpipe吧。它的设计就是为了做你想做的事情,去除网页主要文本内容周围多余的“杂物”(样板,模板)。

有几种方法可以将HTML输入到BoilerPipe中并提取HTML。

你可以使用use a URL

代码语言:javascript
复制
ArticleExtractor.INSTANCE.getText(url);

你可以使用use a String

代码语言:javascript
复制
ArticleExtractor.INSTANCE.getText(myHtml);

也有use a Reader的选项,这打开了大量的选项。

票数 23
EN

Stack Overflow用户

发布于 2011-11-03 08:10:17

您还可以使用boilerpipe将文本分段()为全文/非全文块,而不是仅仅返回其中的一个(本质上,首先是boilerpipe段,然后返回一个字符串)。

假设你可以从java.io.Reader访问你的超文本标记语言,只需要让boilerpipe对超文本标记语言进行分段并为你分类:

代码语言:javascript
复制
Reader reader = ...
InputSource is = new InputSource(reader);

// parse the document into boilerpipe's internal data structure
TextDocument doc = new BoilerpipeSAXInput(is).getTextDocument();

// perform the extraction/classification process on "doc"
ArticleExtractor.INSTANCE.process(doc);

// iterate over all blocks (= segments as "ArticleExtractor" sees them) 
for (TextBlock block : getTextBlocks()) {
    // block.isContent() tells you if it's likely to be content or not 
    // block.getText() gives you the block's text
}

TextBlock有一些更令人兴奋的方法,请随意尝试!

票数 8
EN

Stack Overflow用户

发布于 2014-06-07 07:00:42

Boilerpipe可能存在问题。为什么?嗯,它似乎适用于某些类型的网页,比如只有一个正文内容的网页。

因此,我们可以粗略地将web页面分为三类:

  1. 一个只有一篇文章的网页(值得!)
  2. 一个有多篇文章的网页,比如《纽约时报》的首页
  3. 一个网页实际上没有任何文章,但有一些关于链接的内容,但也可能有一定程度的混乱。

Boilerpipe适用于第一种情况。但是,如果一个人正在做大量的自动化文本处理,那么一个人的软件如何“知道”它正在处理的是哪种类型的网页?如果网页本身可以归入这三个桶中的一个,那么Boilerpipe可以应用于情况#1。情况#2是一个问题,case#3也是一个问题-它可能需要相关网页的聚合来确定哪些是杂乱的,哪些不是。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7021260

复制
相关文章

相似问题

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