找出RSS源中的新数据,与数据库中已有的条目进行比较。然后在db中添加新条目。怎么样?

时间:2008-10-04 20:31:50

标签: xml rss

假设我有一个数据库和一个RSS源。我必须找出RSS源中的新数据,这些数据尚未存在于数据库中。你会如何处理这个问题?

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

首先,您必须唯一地标识每个项目。这是有问题的,因为有些网站使用guid元素,而有些网站则没有,对于某些项目,link元素永远不会更改,而对于某些网站则不会。我认为一般的经验法则是,如果某个项目有guid,那么您将其用作关键字,否则您将使用link作为关键并希望。

一旦你确定了一个项目的密钥,你可以(可能)通过检查pubDate元素来确定你正在查看的项目是否已经更新,如果故事得到这个元素应该更新更新。

这种方法可以处理大多数情况,但与RSS相关的所有情况一样,如果Feed提供程序运行不正常,它会崩溃。

答案 2 :(得分:1)

大多数RSS源都会有每个故事的日期 - 因此,请查询从数据库中提取最新故事的日期,从RSS源中提取所有最新故事,并比较日期。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

手头,一些建议:

  • 对Feed中的每个项目执行校验和,将结果存储在数据库中。将数据库中的结果与来自RSS源的每个新文件/流进行比较。
  • 哈希标题。数据库中每个项目和商店的日期和时间。与每个刷新的RSS流进行比较。