22

我正在尝试创建一个在博客文章上运行良好的通用 HTML 解析器。我想将我的解析器指向特定条目的 URL 并取回帖子本身的干净文本。我的基本方法(来自 python)是使用 BeautifulSoup / Urllib2 的组合,这没关系,但它假设您知道博客条目的正确标签。有没有人有更好的想法?

这里有一些想法,也许有人可以扩展,我还没有足够的知识/诀窍来实施。

  1. unix 程序“lynx”似乎特别擅长解析博客文章——他们使用什么解析器,或者如何使用它?

  2. 是否有任何服务/解析器可以自动删除垃圾广告等?

  3. 在这种情况下,我有一个模糊的概念,即博客文章通常包含在具有 class="entry" 或类似内容的某个定义标签中可能是一个可以接受的假设。因此,有可能创建一个算法来找到它们之间具有最干净文本的封闭标签 - 对此有什么想法吗?

谢谢!

4

2 回答 2

24

男孩,我有适合你的完美解决方案吗?

Arc90 的可读性算法正是这样做的。给定 HTML 内容,它会挑选出主要博客文章文本的内容,忽略页眉、页脚、导航等。

以下是以下实现:

几天后我将发布一个到 CPAN 的 Perl 端口。完毕。

希望这可以帮助!

于 2009-07-18T08:26:34.613 回答
3

有一些项目专门研究过滤给定页面的“噪音”。通常,这样做的方法是为算法提供一些给定类型页面的示例,它可以查看它们之间哪些部分没有变化。话虽如此,您必须为算法提供一些您要解析的每个博客的示例页面/帖子。当您有一小部分要抓取的网站(例如新闻网站)时,这通常很有效。该算法基本上是检测他们在 HTML 中使用的模板并挑选出有趣的部分。这里没有魔法,它是艰难和不完美的。

这个算法的一个很好的例子可以在刚刚开源的 EveryBlock.com 源代码中找到。转到everyblock.com/code并下载“ebdata”包并查看“templatemaker”模块。

我并不是说显而易见的,但是您是否考虑过只使用相关博客中的 RSS?通常,这些字段包含整个博客文章、标题和其他元信息。使用 RSS 将比我之前提到的解决方案简单得多。

于 2009-07-18T08:19:19.480 回答