2

这可能是一个远远超出我现在技能的项目,但我有大约整整一个月的时间花在它上面,所以我认为我可以做到。我想要构建的是:从各种来源收集有关特定主题的新闻。容易,对吧?只需获取 RSS 源并将其显示在页面上即可。好吧,我想要更高级的东西:删除重复项和自定义演示文稿(即能够定义/更改显示新闻标题的格式)。

我玩过 Yahoo Pipes 和其他一些工具,但我面临两个大问题:

  1. 一些来源不提供 RSS 提要。如何创建一个?
  2. 查找和删除重复项的最佳方法是什么。我考虑比较标题并检查是否存在大于 50% 的匹配项。这是一个好习惯吗?

请添加我可能没有考虑过的任何其他内容(问题、建议等)。

4

2 回答 2

1

重复是一个讨厌的问题。我最终做了什么:

  • 1.去除除链接之外的所有HTML标签(虽然我开始使用正则表达式,但我被烧毁了。我最终转向自定义解析以删除标签)
  • 2.去掉所有空格
  • 3. 区分大小写
  • 4. 使用 MD5 对所有内容进行哈希处理。

这就是您留下链接的原因:评论可能就像“是的,这很糟糕”一样简单。“是的,这很糟糕”可能是一个常见的评论。但是,如果文本“这很糟糕”与不同的事物相关联,那么它就不是重复的评论。

此外,您会发现 RSS 提要的 HTML 标签转义很奇怪。您会认为流浪 < 会被双重编码:(我认为)&<; 但事实并非如此。它是编码的 < 但 HTML 标签也是如此!

:<p> 我最终复制了所有已知的由 Mozilla Firefox 解析的 HTML 标签,并手动识别了这些标签。

从 HTML 创建 RSS 提要非常讨厌,我只能向您指出 Spinn3r 等服务,它们在重复数据删除和内容提取方面非常出色。这些服务通常使用我上面的基于概率的算法。我知道有一个提供商可以摆脱正则表达式页面(他们必须知道某个页面是基于 MySpace 或基于 Blogger),但他们的表现并不出色。

于 2010-09-13T02:25:53.520 回答
0

您可能想尝试使用YQL 模块来抓取不提供 RSS 的网页。这是用于抓取 HTML 的 YQL 语句示例。

关于重复,看看这个管道

定制的展示:如果你想真正定制你必须自己操作管道结果,例如将它作为 JSON 获取并使用 Javascript 操作它,或者在服务器端处理它。

于 2010-09-10T17:02:14.727 回答