代码之家  ›  专栏  ›  技术社区  ›  Burak Erdem

使用php的文本解析器,如instapaper

  •  1
  • Burak Erdem  · 技术社区  · 16 年前

    我正试图用php编写一个文本解析器,就像instapaper一样。我想做的是,得到一个网页,并分析它在纯文本模式。

    获取带有curl和strip html标记的网页很简单。但是每个网页都有一些共同的区域,比如页眉、导航、侧边栏、页脚、横幅等等。我只想让文章进入文本模式,排除所有其他部分。如果我知道“id”或“class”信息,排除这些部分也很简单。但我正在尝试自动化这个过程,并申请任何页面,如Instapaper。

    我得到的所有内容之间,但我不知道如何排除页眉,侧栏或页脚,只得到主要的文章正文。我必须发展一个逻辑,只得到主要的文章部分。

    找到准确的密码对我来说并不重要。理解如何排除不必要的部分也很有用,因为我可以尝试用php编写自己的代码。如果有其他语言的例子也会很有用。

    谢谢你的帮助。

    5 回复  |  直到 12 年前
        1
  •  3
  •   mr-sk    16 年前

    你可以看看这个bookmarklet背后的算法, readability -它在所有网页垃圾中提取内容的成功率相当高。

    我的朋友做到了,这就是我推荐它的原因——因为我知道它是有效的,而且我知道他使用了很多技术来分析数据。你可以根据自己的要求运用这些技巧。

        2
  •  2
  •   James    15 年前

    您可以查看goose的源代码->它已经做了很多类似instapaper的文本提取

    https://github.com/jiminoc/goose/wiki

        3
  •  1
  •   szabgab Brandon Fosdick    12 年前

    看看shuyo nakatani的extractcontent代码。

    查看原始ruby源代码 http://rubyforge.org/projects/extractcontent/ 或者它的一个端口到Perl http://metacpan.org/pod/HTML::ExtractContent

        4
  •  0
  •   Ignacio Vazquez-Abrams    16 年前

    你真的应该考虑使用 HTML parser 为此。收集相似的页面并比较dom树以找到不同的节点。

        5
  •  0
  •   simbo1905    14 年前

    article 提供不同方法的比较。Java文库 boilerpipe 评价很高。在样板文件网站上,你可以找到他的科学论文,与其他算法进行比较。

    并非所有算法都适用于所有目的。这些工具的最大应用就是将原始文本作为搜索引擎进行索引。你不希望搜索结果被广告搞得一团糟。这样的抽取可能是破坏性的;这意味着它不会给你“最佳阅读区域”,这正是人们对Instapaper或可读性的要求。

    推荐文章