使用PHP的Text Parser,如Instapaper

时间:2010-01-24 01:03:05

标签: php parsing text

我正在尝试用PHP编写文本解析器,就像Instapaper那样。我想做的是;获取一个网页并以纯文本模式解析它。

使用cURL和剥离HTML标记获取网页很简单。但是每个网页都有一些共同的领域;像标题,导航,侧边栏,页脚,横幅等。我只想在文本模式下获取文章并排除所有其他部分。如果我知道“id”或“class”信息,那么排除这些部分也很简单。但我正在尝试自动化此过程并申请任何页面,例如Instapaper。

我得到了所有内容,但我不知道如何排除标题,侧边栏或页脚,只获取主文章正文。我必须开发一个逻辑来获得主要的文章部分。

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

感谢您的帮助。

5 个答案:

答案 0 :(得分:3)

您可以尝试查看此bookmarklet背后的算法readability - 在所有网页垃圾中提取内容的成功率都不错。

我的朋友做了,这就是为什么我推荐它 - 因为我知道它有效,而且我知道他用来解析数据的许多技术。您可以根据自己的要求应用这些技巧。

答案 1 :(得分:2)

你可以看看Goose的来源 - >它已经做了很多这样的instapaper文本提取

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

答案 2 :(得分:1)

查看Shuyo Nakatani的ExtractContent代码。

查看原始Ruby源http://rubyforge.org/projects/extractcontent/或Perl http://metacpan.org/pod/HTML::ExtractContent

的端口

答案 3 :(得分:0)

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

答案 4 :(得分:0)

article提供了不同方法的比较。 java库boilerpipe的评价很高。在samppipe网站,你会发现他的科学论文与其他算法相比较。

并非所有算法都适用于所有目的。这类工具的最大应用是将原始文本作为搜索引擎进行索引。我们的想法是,您不希望广告混淆搜索结果。这种提取可能具有破坏性;这意味着它不会给你"最好的阅读区域"这是人们想要的instapaper或可读性。