1

假设我有一个数据库和一个 RSS 提要。我必须找出来自 RSS 提要的新数据是什么,这些数据还没有在数据库中。你将如何解决这个问题?

4

5 回答 5

2

如何为每个 RSS 项目生成一个哈希码或一些唯一标识符,然后将其存储在数据库中?然后,您只需为新 RSS 中的每个项目生成哈希码,并对照数据库进行检查。

于 2008-10-04T20:39:17.187 回答
2

首先,您必须唯一标识每个项目。这是有问题的,因为有些站点使用该guid元素而有些站点不使用,并且对于某些项目,该link元素永远不会更改,而对于某些项目却会。我认为一般的经验法则是,如果一个项目有一个guid你用它作为键,否则你使用link作为键和希望。

一旦您确定了一个项目的键,您可以(可能)通过检查pubDate元素来确定您正在查看的项目是否已更新,如果故事更新,则应该更新该元素。

这种方法可以处理大多数情况,但与 RSS 相关的所有事情一样,如果提要提供者行为不正确,它就会崩溃。

于 2008-10-04T20:47:35.190 回答
1

大多数 RSS 提要对每个故事都有一个日期 - 因此,进行查询以从数据库中提取最新故事的日期,从 RSS 提要中提取所有最新故事,并比较日期。

这还取决于这是否适用于一个特定的提要,或者您是否正在编写适用于许多提要的内容。如果它应该适用于所有提要,请使用其中一种散列方法;创建标题和日期的哈希并将其用作唯一标识符。

于 2008-10-04T20:37:19.063 回答
0

从 rss 提要中特定项目的唯一字段中提取。然后检查该项目是否已经在数据库中。在循环中运行此逻辑。

于 2008-10-04T20:34:19.770 回答
0

顺便提几个建议:

  • 对提要中的每个项目执行校验和,将结果存储在数据库中。将数据库中的结果与来自 RSS 源的每个新文件/流进行比较。
  • 哈希标题。每个项目的日期和时间并存储在数据库中。与每个刷新的 RSS 流进行比较。
于 2008-10-04T20:40:11.770 回答