鉴于html文件提取只是有意义的文本

时间:2015-03-31 11:49:59

标签: java algorithm nlp jsoup

鉴于标准html文件包含css链接,图像链接等,如何才能提取有意义的文本?有意义的是指与页面相关的文本。所以在StackOverflow的情况下,问答文本。对于新闻网站来说,这将成为故事的主体。

一种算法可能用于确定什么是句子:搜索在开头和句号结尾处包含大写字母的单词序列(粗略但只是开始的东西)。

有哪些替代方案?

更新:@Vanaja Jayaraman建议的套管似乎效果很好。我需要为boilerpipe添加以下Maven依赖项

<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.11.0</version>
</dependency>

<dependency>
    <groupId>net.sourceforge.nekohtml</groupId>
    <artifactId>nekohtml</artifactId>
    <version>1.9.21</version>
</dependency>

代码(Scala)提取文本:

  val source = scala.io.Source.fromFile("c:\\news1.html")
  val lines = source.mkString
  source.close()
println(de.l3s.boilerpipe.extractors.ArticleExtractor.INSTANCE.getText(lines));

2 个答案:

答案 0 :(得分:2)

如果您的输入是新闻网站,则可以使用Boilerpipe的文章提取器。 Boilerpipe还提供其他一些提取器类型。

在JSoup中,您可以使用选择器概念。

答案 1 :(得分:0)

您可以使用HTML Selectors,例如class,id,paragraph等。您可以通过调用.HTML使用.text(),HTML来获取文本。我之前抓了一个网站你可以看看here。它有点乱,但它会帮助你。

Here是很好的教程