【问题标题】:How extract meaningful text from HTML如何从 HTML 中提取有意义的文本
【发布时间】:2011-04-27 12:48:00
【问题描述】:

我想解析一个 html 页面并从中提取有意义的文本。任何人都知道一些好的算法来做到这一点?

我在 Rails 上开发我的应用程序,但我认为 ruby​​ 在这方面有点慢,所以我认为如果在 c 中存在一些好的库,那将是合适的。

谢谢!!

PD:请不要用 java 推荐任何东西

更新: 我找到了这个link text

不幸的是,在 python 中

【问题讨论】:

  • 要求文本有意义使这项任务变得更加困难。
  • 是的,但显然“统计”方法是正确的答案
  • 那可能学点 Python 吧? :-)

标签: html c ruby html-parsing html-content-extraction


【解决方案1】:

为 Ruby 使用Nokogiri,它速度快,用 C 语言编写。

(使用正则表达式解析 HTML 之类的递归表达式是 notoriously difficult and error prone,我不会走这条路。我只在答案中提到这一点,因为这个问题似乎一次又一次地出现。)

使用像上面提到的 Nokogiri 这样的真正解析器,您还可以获得额外的好处,即保留 HTML 文档的结构和逻辑,有时您确实需要这些线索。

【讨论】:

    【解决方案2】:

    与 Ruby 集成的解决方案

    外部解决方案

    【讨论】:

      【解决方案3】:

      Lynx 能够做到这一点。如果你想看看,这是开源的。

      【讨论】:

      • 但是生成一个单独的程序并不是我的快速想法。
      • 是的,你说得对。该网站将抓取几个页面并提取文本。这个想法是将新闻的文本与文本的其余部分分开。它必须非常快。
      • 我不建议按原样使用 lynx。您可以从源代码中获取您感兴趣的任何内容并将其编译为库。
      【解决方案4】:

      您应该从文本中删除所有带尖括号的部分,然后折叠空格。 理论上<> 在其他情况下不应该存在。页面到处都包含<> 而不是它们。

      折叠空格:将所有 TAB、换行符等转换为空格,然后将每个空格序列替换为单个空格。

      更新:您应该在找到<body> 标记后开始。

      【讨论】:

      • 我不建议使用正则表达式来解析 HTML 或任何其他类似的格式。 (除了可能是微不足道的情况,但作为一般规则,请避免。)
      • 正则表达式 + HTML:stackoverflow.com/questions/1732348/…
      • 1st:@Am​​igable Clark Kant:我们不是在谈论解析,我们在谈论剥离。可以使用正则表达式剥离正确的 HTML。如果我们的规范中有它,那么我们可以安全地使用它 --- 第二:你们都误解了我。我不推荐正则表达式。我表达了我对算法的想法,并调用了“regexp”短语作为人类语言工具。我可以写<anything>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2011-01-07
      • 2016-02-07
      相关资源
      最近更新 更多